2011-01-03 9 views
0
Select COUNT(*) as 'Number' 
From image 
WHERE (image.current_phase = 'aggregation' AND (image.raw_filename REGEXP '%gordonpho%back%$')) 

上記のSQLクエリで誤った構文エラーが発生しています。私はテーブルimageから列の番号を取得したいと考えています。列image.current_phaseには集約がテキストとして含まれています。また、列image.raw_filenameは '%gordonpho%back%'で終わります。誤った構文エラーを返すSQLクエリ

誰かが私の声明で構文エラーを見ることができますか?

+0

あなたはどのようなRDBMSを使用していますか? –

+0

@Martin、Microsoft SQL – Albinoswordfish

+0

本当に正規表現構文を使用しているのであれば、 '%'はあなたが望むものではないでしょうか。 –

答えて

1

REGEXPは、T-SQLで有効ではありませんが、あなたの「正規表現は」とにかくLIKEを使用して同じになるので、とにかくそれを必要としない:

Select COUNT(*) as 'Number' 
From image 
WHERE (image.current_phase = 'aggregation' 
     AND (image.raw_filename LIKE '%gordonpho%back%') 
+0

このソリューションがうまくいきました! – Albinoswordfish

-1

SQLの実装では、imageが予約語である可能性があります。バッククォート(MySQL)、大括弧[](MSSQL)、または二重引用符"(大部分のもの)で引用符で囲みます。

'%gordonpho%back%$'%も、正規表現ではワイルドカードとして扱われません。リテラルを次のように置き換えてみてください。

'.*gordonpho.*back.*$' 
+0

申し訳ありませんが、その投稿ではSQLサーバー用の場所はどこですか?ああ、タグ。良い悲しみ。 –

0

SQL Serverは正規表現をネイティブにサポートしていません。 LIKE使用してみてください:あなたは本当に/必要な時間のために

Select COUNT(*) as 'Number' 
From image 
WHERE (image.current_phase = 'aggregation' 
    AND (image.raw_filename LIKE '%gordonpho%back%')) 

は、正規表現を使用する場合、あなたはSQLCLRサポート(.NETコード)を介してそれをしなければならないと思います。

関連する問題