If-Koubou

Etsi rivejä erityismerkkien avulla SQL Serverissa

Etsi rivejä erityismerkkien avulla SQL Serverissa (Miten)

Vianmäärittäessäsi ohjelmointiongelmaa huomasin tänään, ettet voi käyttää LIKE-haun merkkijonoista, joissa on erikoismerkkejä, kuten% tai _, ilman erityistä syntaksia. Havaittu ongelma kesti vain muutaman minuutin, mutta syntaksin muistaminen on aina helpompaa, jos kirjoitat siitä.

Joten kyllä, tämä viesti on vain minun hyväksi. Toivottavasti se auttaa jotakuta muuta.

Oletetaan, että haluat löytää kaikki kentät, jotka sisältävät tekstiä "100%", joten koota tämä kysely:

SELECT * FROM tablename WHERE kenttänimi LIKE '% 100 %%'

Sen sijaan, mitä haluat, saat kaikki rivit, jotka sisältävät "100" sekä rivit, jotka sisältävät "100%".

Ongelma tässä on se, että SQL Server käyttää prosenttimerkkiä, alaviivaa ja hakasulkeita erikoismerkiksi. Yksinkertaisesti niitä ei voi käyttää tavallisena merkkinä LIKE-kyselyssä ilman, että heitä poistetaan.

Square Bracket Escape

Voit ympäröidä% tai _ hakasulkeilla kertoa SQL Serverille, että sisäinen merkki on säännöllinen merkki.

SELECT * FROM taulukonimi WHERE kentänimi LIKE '% 100 [%]%'

T-SQL ESCAPE-syntaksi

Vaihtoehtoisesti voit lisätä ESCAPE-operaattorin kyselyyn ja lisätä \ merkki ennen kuin haluat poistua arvosta.

SELECT * FROM tablename WHERE kentänimi LIKE '% 100 \ %%' ESCAPE '\'

Kyselyn ESCAPE '\' osa kertoo, että SQL-moottori tulkitsee merkin \ kirjaimellisesti merkin sijasta.

Henkilökohtaisesti löydän toisen menetelmän helpommin käsittelemään, ja voit käyttää sitä paitsi neliön kiinnike myös.