3

このルールでSQLを検索するにはどうすればよいですか:

  1. フィールドは、0 から始まるか、1 つ以上の '0' から始まる必要があります
  2. フィールドは、555 などの数字で終わる必要があります

つまり、パターンは次のレコードと一致する必要があります。

'555'
'0555'
'00555'
etc

SQLは1つの選択クエリでこれを行うことができますか(文字列分割などなし)? ありがとうございました。

4

3 に答える 3

9

おそらく次のようになります。

WHERE Field LIKE '%555' AND Field NOT LIKE '%[^0]%555'

これを SQL Fiddle でライブで試してください。

于 2012-05-17T08:12:14.983 に答える
1

このようになるかもしれません

SELECT * FROM table where CAST(field AS int) = CAST('your input' AS int) 
于 2012-05-17T08:17:01.953 に答える
0

あなたの状況に固有の代替手段(「文字列は、任意の数の先行ゼロ(「なし」を含む)を持つ整数である必要がある」と表現できます)で、 @ timus2001の答えに触発されました:

WHERE
  CASE
    WHEN Field NOT LIKE '%[^0-9]%' AND LEN(Field) <= 38
    THEN CAST(CAST(Field AS decimal(38, 0)) AS varchar(38))
    ELSE Field
  END = '555'

値が長すぎて、可能な限り長い1 つの数値型に変換できない可能性がある場合は、長さテストが必要です。LEN(Field) = 3の代わりに条件を使用することもできますが、要件が別の長さに変更されたLEN(Field) <= 38場合は、その部分を変更することを忘れないでください。'555'現状では、必要に応じて文字列を置き換えるだけで済みます'555'(38 文字を超えてはならないことに注意してください)。

10 進数の桁数、つまりscaleに関しては1です。

于 2012-05-17T08:54:38.460 に答える