1

SQL Server には、数値を含む文字列列があります。必要な各エントリは 1 つの数字だけなので、解析は必要ありません。400 から 450 までの数字を含むすべての行を見つける方法が必要です。代わりに、次のようにします。

...where my stringcolumn like '%400%' or stringcolumn like '%401%' or stringcolumn like '%402%' or ...

いくつかの入力を節約できるより良いものはありますか?

これらの行には、「5335154」、「test4559@me.com」、「555-555-5555」などの他の値もあります。それらを除外することを考慮する必要があります。

4

4 に答える 4

3
...where stringcolumn like '4[0-4][0-9]' OR stringcolumn = '450'

3桁に制限する場合は、ワイルドカードは必要ありません。

于 2012-08-07T18:27:48.993 に答える
2

これを実現するには、正規表現を使用します。

...where stringcolumn like '4[0-4][0-9]' OR stringcolumn like '450'
于 2012-08-07T18:18:29.233 に答える
0

一方通行

WHERE Column like '%4[0-4][09]%'
OR Column LIKE '%500%'

これにより、番号が含まれるものがすべて選択されるため、5000も返されることに注意してください。

于 2012-08-07T18:20:00.613 に答える
0

私は次のことをします:

select t.*
from (select t.*,
             (case when charindex('4', col) > 0
                   then substrint(col, charindex('4', col), charindex('4', col) + 2)
              end) as col4xx
      from t
     ) t
where (case when isnumeric(col4xx) = 1
            then (case when cast(col4xx as int) between 400 and 450 then 'true'
                  end)
       end) = 'true'

私はWHERE句にcaseステートメントを含めるのが好きではありません。ただし、数値への変換を確実にするには、これが必要です(または、変換が別のサブクエリの列になる可能性があります)。以下は同等ではないことに注意してください。

where col4xx between '400' and '450'

文字列「44A」が一致するため。

于 2012-08-07T18:34:56.797 に答える