2

こんにちは私はSQLでこのクエリを実行しようとしていますが、結果が得られません:

SELECT        COUNT(*) AS Expr1
FROM            restaurantData
WHERE        (restaurantInfo LIKE '''%' + 'xyz' + '%''') OR
                         (restaurantName LIKE '''%' + 'xyz' + '%''') OR
                         (restaurantDescription LIKE '''%' + 'xyz' + '%''')

値がxyzのrestaurantName列がありますRestaurant

ここにいくつかのサンプルデータがあります

4

2 に答える 2

4

余分な一重引用符があるのはなぜですか?

   SELECT
            COUNT(*) AS Expr1 
    FROM  restaurantData 
    WHERE        (restaurantInfo LIKE '%Guu%') 
OR (restaurantName LIKE '%Guu%') 
    OR (restaurantDescription LIKE '%Guu%')

動的に構築しようとしているようです。その場合は、作成方法を投稿することをお勧めします。

于 2012-06-29T17:08:56.647 に答える
2

文字列連結が実行されるとき、結果を比較するために使用しているものは次のとおりです。

'%Guu%'

SQL 文字列に 2 つのシングル クォート文字を続けて入れると、「エスケープ」されるため、''として使用され'ます。データ セットに引用符が含まれている場合は、次のように一致します。

restaurantInfo 
--------------
'ABCGuuDEF'
'xyzGuuamn'

代わりにやりたいと思います:

'%''' + 'Guu' + '''%'

どれが合うだろう

restaurantInfo 
--------------
Asdf'Guu'
'Guu'Asdf

または、引用符なしで Guu を探しているだけの場合は、

'%' + 'Guu' + '%'

どれが合うだろう

restaurantInfo 
--------------
Guu
GuuAbcd
AbcdGuu
Asdf'Guu'
'Guu'Asdf
于 2012-06-29T17:09:48.613 に答える