このルールでSQLを検索するにはどうすればよいですか:
- フィールドは、0 から始まるか、1 つ以上の '0' から始まる必要があります
- フィールドは、555 などの数字で終わる必要があります
つまり、パターンは次のレコードと一致する必要があります。
'555'
'0555'
'00555'
etc
SQLは1つの選択クエリでこれを行うことができますか(文字列分割などなし)? ありがとうございました。
このルールでSQLを検索するにはどうすればよいですか:
つまり、パターンは次のレコードと一致する必要があります。
'555'
'0555'
'00555'
etc
SQLは1つの選択クエリでこれを行うことができますか(文字列分割などなし)? ありがとうございました。
このようになるかもしれません
SELECT * FROM table where CAST(field AS int) = CAST('your input' AS int)
あなたの状況に固有の代替手段(「文字列は、任意の数の先行ゼロ(「なし」を含む)を持つ整数である必要がある」と表現できます)で、 @ 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です。