0

あなたが元気でいることを願っています

クエリを書くのに非常に苦労しています

これが私の質問の説明です

「jr_produits」という名前のフィールドを持つ「jreviews_content」というデータベーステーブルがあります

「jr_produits」では、データは *ryan-decosta*tom-gosling* の形式であるため、正確な単語ベースの検索クエリが必要です。つまり、ユーザー タイプが「rya」の場合、mysql は何も返さないはずですが、ユーザー タイプが ryan の場合ユーザーが「gos」と入力した場合、mysqlは何も返さないはずですが、ユーザーがgoslingと入力した場合は、ryanとgoslingが正確な単語である行を返す必要があります。

私が書いているクエリは

SELECT *
FROM `jreviews_content`
WHERE jr_produits LIKE '%*ryan-%' or jr_produits LIKE '%-ryan*%' 
or jr_produits LIKE '%*ryan*%' or jr_produits LIKE '%-ryan-%';

より効率的な他の方法(正規表現または他の方法のいずれか)でそれを実行したい

SELECT * FROM `jreviews_content` WHERE jr_produits REGEXP '^[*-]ryan[*-]$'

何も取得しません

どちらでもない

SELECT * FROM `jreviews_content` WHERE jr_produits like '%[*-]ryan[*-]%'

何か提案してください

4

1 に答える 1

1

MySQL 正規表現の単語境界マーカーを試してください。それらは、このページの半分ほど下に文書化されています。

SELECT *
FROM jreviews_content
WHERE jr_produits REGEXP '[[:<:]]ryan[[:>:]]'

今日は MySQL にアクセスできないことに注意してください。したがって、これはテストされていません。

@ user1032531 の発言にも注意してください。*ryan-decosta*tom-gosling*ほとんどの場合、「悪いデザイン」を意味するような値を持つレコード。

于 2013-10-01T12:12:58.240 に答える