ホームページ >バックエンド開発 >PHPチュートリアル >SQL ワイルドカードに小さな問題があり、オンラインで緊急に待機しています

SQL ワイルドカードに小さな問題があり、オンラインで緊急に待機しています

WBOY
WBOYオリジナル
2016-06-23 13:59:25845ブラウズ

私は mysql の初心者です
ワイルドカードで問題が発生した場合は、助けを求めてください

users テーブルで名前に「szo」または「szö」が含まれるデータを選択したいです
そこで、次のコードを書きました。

select * from users where name like '%sz[oö]%'

データベースにはこのようなデータがあります
しかし、戻り値は 0 です
試してください
select * from users where name like '%szo%' or name like '%szö%'

結果があります
これら 2 つの違いは何ですか?


ディスカッションへの返信 (解決策)

ワイルドカード文字mysql のようなものは "_" と "%" のみです
"_ " は任意の 1 文字に一致します
"%" は任意の複数の文字に一致します。

select * from users where name like ‘%sz[oö]%’
は、名前に sz[oö] が含まれるレコードを意味します。
szo または szö を含むレコードの代わりに

like は正規表現一致ではありません。ただし、ワイルドカード文字 % と _ のみが一致するため、文字グループ [xy] はサポートされません。
REGEXP を試すことができます

は正規表現一致ではありません。ただし、ワイルドカード文字 % と _ のみが一致するため、文字グループ [xy] はサポートされません。
REGEXP を試すことができます
試してみましたが、同じ結果でした
他に方法はありますか

mysql のワイルドカード文字は「_」と「%」のみです
「_」は任意の 1 文字に一致します
「%」は任意の数字の文字に一致します。

select * from users where name like ‘%sz[oö]%’
は、名前に sz[oö] が含まれるレコードを意味します。
szo または szö を含むレコードの代わりに
わかりました、解決策はありますか

select * from users where name like '%szo%' or name like '%szö%'
この方法ですでに解決していませんか?


like は正規表現に一致しません。ただし、ワイルドカード文字 % と _ のみが一致するため、文字グループ [xy] はサポートされません。
REGEXP を試すことができます
試してみましたが、結果は同じでした
他に方法はありますか?

ダメですか?正規表現はどのように書かれていますか?
select * from users where name regexp 'sz[oö]'

SELECT * FROM  usersWHERE  nameREGEXP  '(a-z)*sz(o|ö)(a-z)*'LIMIT 0 , 30

解決しました、皆さんありがとうございます
結論



like は正規表現一致ではありません。ただし、ワイルドカード文字 % と _ のみが一致するため、文字グループ [xy] はサポートされません。
REGEXP を試すことができます
試してみましたが、結果は同じでした
他に方法はありますか?

ダメですか?正規表現はどのように書かれていますか?
select * from users where name regexp 'sz[oö]'
like は [oö] を認識しないため、正規表現は % を認識しないので、 pull

SELECT * FROM  usersWHERE  nameREGEXP  '(a-z)*sz(o|ö)(a-z)*'LIMIT 0 , 30

select * from users where name like '%szo%' or name like ' %szoö%'



like は正規表現に一致しません。ただし、ワイルドカード文字 % と _ のみが一致するため、文字グループ [xy] はサポートされません。
REGEXP を試すことができます
試してみましたが、結果は同じでした
他に方法はありますか?

ダメですか?正規表現はどのように書かれていますか?
select * from users where name regexp 'sz[oö]'
あなたのコードを試してみました。私のコードよりも簡単で使いやすいです


のようなものではありません。正規表現の一致。ただし、ワイルドカード文字 % と _ のみが一致するため、文字グループ [xy] はサポートされません。
REGEXP を試すことができます
試してみましたが、結果は同じでした
他に方法はありますか?

ダメですか?正規表現はどのように書かれていますか?
select * from users where name regexp 'sz[oö]'
like は [oö] を認識しないので、正規表現は % を認識しないので、プル

SELECT * FROM  usersWHERE  nameREGEXP  '(a-z)*sz(o|ö)(a-z)*'LIMIT 0 , 30


正規表現が使用されているので、% の用途は何ですか?これはバスケットボールをするために登山靴を履くようなものでしょうか?

select * from users where name like '%szo%' or name like '%szö%'

この方法ですでに解決していませんか?

話が長くて、大変です




like は正規表現に一致しません。ただし、ワイルドカード文字 % と _ のみが一致するため、文字グループ [xy] はサポートされません。
REGEXP を試すことができます
試してみましたが、結果は同じでした
他に方法はありますか?

ダメですか?正規表現はどのように書かれていますか?
select * from users where name regexp 'sz[oö]'
あなたのコードを試してみました。私のコードよりも簡単で使いやすいです
私は初心者です。またようこそ。新人の立場から来なかった人は誰ですか?
特定のスキルを習得すると、学習効率が 2 倍になることがよくあります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。