Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 20728|Vastaus: 0

[Lähde] Kuten fuzzy query Linqista sql:ään

[Kopioi linkki]
Julkaistu 7.9.2015 23.16.28 | | |
Like-toiminnon toiminta on vähän kuin Like, mutta suunta on muuttunut. Mitä se tarkoittaa? Annat merkkijonon ja etsit datasta kenttää, joka sisältää tämän merkkijonon. Toisin sanoen annettu merkkijono on kentän osajoukko. SQL scrip{filter}t on kirjoitettu näin.


Selec * taulukosta, jossa id tykkää '%AD%'
Selec * taulukosta, jossa id tykkää '%AD'
Selec * taulukosta, jossa id 'AD%'
Yllä oleva % on villikortti, joka tarkoittaa, että kentällä on arvo, ja tuntematon asema korvataan %:lla. Ensimmäinen on osoittaa, että keskimmäinen osa on AD ja molemmat päät ovat epäselvät. Toinen on AD lopussa, ja edellinen on epäselvä. Kolmas puolestaan alkaa kirjaimella AD ja päättyy epäselvästi. Vastaava Linq-lause on:


var q = (c:stä db:ssä. Asiakkaat
missä c.CustomerID.Contains("ROUT")
valitse c). ToList();
SQL, jonka se generoi, on


VALITSE [t0]. [CustomerID], [t0]. [Yrityksen nimi], [t0]. [YhteystietoNimi], [t0]. [ContactT
itle], [t0]. [Osoite], [t0]. [Kaupunki], [t0]. [Alue], [t0]. [Postinumero], [t0]. [Neuvonantaja
try], [t0]. [Puhelin], [t0]. [Faksi]
FROM [dbo]. [Asiakkaat] AS [t0]
MISSÄ [t0]. [CustomerID] KUIN @p0
-- @p0: Syötemerkkijono (koko = 6; Prec = 0; Asteikko = 0) [%ROUT%]
Lopuksi ISSA, pää villi kortti:


var q = (c:stä db:ssä. Asiakkaat
missä c.CustomerID.EndsWith("ISSA")
valitse c). ToList();
SQL, jonka se generoi, on


VALITSE [t0]. [CustomerID], [t0]. [Yrityksen nimi], [t0]. [YhteystietoNimi], [t0]. [ContactT
itle], [t0]. [Osoite], [t0]. [Kaupunki], [t0]. [Alue], [t0]. [Postinumero], [t0]. [Neuvonantaja
try], [t0]. [Puhelin], [t0]. [Faksi]
FROM [dbo]. [Asiakkaat] AS [t0]
MISSÄ [t0]. [CustomerID] KUIN @p0
-- @p0: Syötemerkkijono (koko = 5; Prec = 0; Asteikko = 0) [%ISSA]
Aloittaen ARO:sta, häntä villi kortti:


var q = (c:stä db:ssä. Asiakkaat
missä c.CustomerID.StartsWith("ARO")
valitse c). ToList();
SQL, jonka se generoi, on


VALITSE [t0]. [CustomerID], [t0]. [Yrityksen nimi], [t0]. [YhteystietoNimi], [t0]. [ContactT
itle], [t0]. [Osoite], [t0]. [Kaupunki], [t0]. [Alue], [t0]. [Postinumero], [t0]. [Neuvonantaja
try], [t0]. [Puhelin], [t0]. [Faksi]
FROM [dbo]. [Asiakkaat] AS [t0]
MISSÄ [t0]. [CustomerID] KUIN @p0
-- @p0: Syötemerkkijono (koko = 4; Prec = 0; Asteikko = 0) [ARO%]

Linq tarjoaa myös metodin nimeltä SqlMethods.Like, joka vaatii ensin System.Data.Linq.SqlClient -nimiavaruuden lisäämistä. Edellä mainitut kolme voidaan kirjoittaa


var q = (c:stä db:ssä. Asiakkaat
missä SqlMethods.Like(c.CustomerID, "%ROUT%")
valitse c). ToList();
Tässä sinun täytyy täyttää itse jokerikortti kertoaksesi Linqille, miten sinut yhdistettiin. Mitä esimerkiksi.


var q = (c:stä db:ssä. Asiakkaat
missä SqlMethods.Like(c.CustomerID, "%ISSA")
valitse c). ToList();
Toinen esimerkki:


var q = (c:stä db:ssä. Asiakkaat
missä SqlMethods.Like(c.CustomerID, "ARO%")
valitse c). ToList();
Upein asia SqlMethods.Likessa on se, että voit toteuttaa villikortteja missä tahansa omien määritellyjen jokerikorttien avulla. Mitä esimerkiksi.


var q = (c:stä db:ssä. Asiakkaat
missä SqlMethods.Like(c.CustomerID, "A%O%T")
valitse c). ToList();
SQL, jonka se generoi, on


VALITSE [t0]. [CustomerID], [t0]. [Yrityksen nimi], [t0]. [YhteystietoNimi], [t0]. [ContactT
itle], [t0]. [Osoite], [t0]. [Kaupunki], [t0]. [Alue], [t0]. [Postinumero], [t0]. [Neuvonantaja
try], [t0]. [Puhelin], [t0]. [Faksi]
FROM [dbo]. [Asiakkaat] AS [t0]
MISSÄ [t0]. [CustomerID] KUIN @p0
-- @p0: Syötemerkkijono (koko = 5; Prec = 0; Asteikko = 0) [A%O%T]

Tavallisin asia on tietää, että se alkaa A:lla ja päättyy T:hen, tietää arvon O keskellä, eikä tiedä mitään muuta. Käytä vain tätä.
SQL Server määrittelee neljä villikorttia, jotka kaikki ovat saatavilla täällä. Ne ovat:
Wildcard-merkki Descrip{filter}tion Esimerkki
% Mikä tahansa nolla tai useampi merkkijono. MISSÄ otsikko KUTEN '%computer%' löytää kaikki kirjan nimet, joissa sana 'computer' on missä tahansa kirjan nimessä.
_ (alleviivaus) Mikä tahansa yksittäinen merkki. WHERE au_fname LIKE '_ean' löytää kaikki nelikirjaimiset etunimet, jotka päättyvät ean-kirjaimella (Dean, Sean jne.).
[ ] Mikä tahansa yksittäinen merkki määritellyn alueen ([a-f]) tai joukon ([abcdef]) sisällä. MISSÄ au_lname KUTEN '[C-P]arsen' löytää kirjoittajan sukunimet, jotka päättyvät arseniin ja alkavat millä tahansa yksittäisellä merkillä C:n ja P:n välillä, esimerkiksi Carsen, Larsen, Karsen ja niin edelleen.
[^] Mikä tahansa yksittäinen merkki, joka ei ole määritellyllä alueella ([^a-f]) tai joukolla ([^abcdef]). MISSÄ au_lname KUTEN 'de[^l]%', kaikki tekijän sukunimet, jotka alkavat de:llä, ja missä seuraava kirjain ei ole l.

% edustaa nollapituista tai minkä tahansa pituisen merkkijonon. _ tarkoittaa merkkiä. [] tarkoittaa merkkiä tietyllä alueella. [^] tarkoittaa merkkiä, joka ei ole tietyllä alueella
Kuten mitä:


var q = (c:stä db:ssä. Asiakkaat
missä SqlMethods.Like(c.CustomerID, "A_O_T")
valitse c). ToList();
Käytä vain _ esittämään hahmoa. Generoitu SQL on:


VALITSE [t0]. [CustomerID], [t0]. [Yrityksen nimi], [t0]. [YhteystietoNimi], [t0]. [ContactT
itle], [t0]. [Osoite], [t0]. [Kaupunki], [t0]. [Alue], [t0]. [Postinumero], [t0]. [Neuvonantaja
try], [t0]. [Puhelin], [t0]. [Faksi]
FROM [dbo]. [Asiakkaat] AS [t0]
MISSÄ [t0]. [CustomerID] KUIN @p0
-- @p0: Syötemerkkijono (koko = 5; Prec = 0; Asteikko = 0) [A_O_T]

Not Likessa se on myös hyvin yksinkertaista, lisää vain hölynpölyä.


var q = (c:stä db:ssä. Asiakkaat
missä! SqlMethods.Like(c.CustomerID, "A_O_T")
valitse c). ToList();

SqlMethods.Like:ssa on myös parametri nimeltä escape character, joka käännetään seuraavaksi lauseeksi.


VALITSE sarakkeet taulukosta MISSÄ
sarake LIKE '%\%%' ESCAPE '\'
Escape johtuu siitä, että kentällä on erikoismerkkejä, kuten %,_ [ ], joita käytetään villikorteina. Tässä kohtaa Escape astuu kuvaan. Tämä on SQL Server -juttu.





Edellinen:Verkkosivuston suorituskyvyn optimointi: Yksityiskohtainen selitys välimuistin ohjausasetuksista
Seuraava:Ruijie on aina ollut päättäväinen, mitä on meneillään
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com