5

likeステートメントをスペースと末尾のワイルドカードで機能させることができません。私の質問は次のようになります:

select * from Table where Field like 'Desc_%'

データは、Desc Top、DescBottomなどのスペースで区切られます。パターン'Desc_%'を使用するとクエリは機能しますが、パターン' Desc%'を使用すると機能しません。フィールドはnvarchar(255)です。

何か案は?

編集

データはタブ区切りであり、2008 Management Studioから値をコピーすると、タブがスペースに変換されたことがわかりました。ばかげた間違い。[]のヒントが気に入ったので、答えをマークしました。みんなありがとう、グリッド結果からのコピーを信用しないことを覚えています。

4

3 に答える 3

3

角かっこ'['&']'を使用して、一致する単一文字クラスを設定します。あなたの場合、SQLは次のようになります。 "select * from Table where Field like'Desc []%'"

編集:サンプルを追加、リンク

CREATE TABLE #findtest (mytext  varchar(200) )

insert #findtest VALUES ('Desc r')
insert #findtest VALUES ('Descr')

select * from #findtest where mytext like 'Desc[ ]%'

DROP TABLE #findtest

(1 row(s) affected)

(1 row(s) affected)
mytext
--------
Desc r

(1 row(s) affected)

この記事を参照してください。

于 2010-07-19T17:23:22.503 に答える
0

アンダースコアは1文字のワイルドカードであり、パーセントは複数文字のワイルドカードであるため、同じです( "%"と "_%")。これは、2つの連続したワイルドカードを要求しているようなものです。私があなたの質問を理解しているかどうかはわかりませんが、それがあなたの期待どおりに動作しないことは驚きではありません。

于 2010-07-19T17:24:43.390 に答える
0

ASCII値を使用して、スペースが必要であることを明示的に示すことを検討しますか?

SELECT * FROM Table WHERE Field Like 'Desc' + CHAR(32) + '%'
于 2010-07-19T17:39:46.637 に答える