我有一个表格,其列可以包含
之类的值Id FileNumber
------------------
1 0025
2 CDE01
3 0035
4 25
5 45
6 250
7 XYZ1
8 2500
现在,如果我想选择具有FileNumber 25的行,我该怎么做呢。我不希望行具有250或2500.搜索应该只获得0025和25.此列的类型为varchar。但是,我应该能够搜索任何值,如XYZ1 OR 0025 OR 250
我尝试使用Like运算符,例如:WHERE FileNumber像'%25%'也试过WHERE FileNumber像'25%'没有给我想要的结果 任何帮助将不胜感激
答案 0 :(得分:4)
根据示例数据,我假设您需要检索的数字是整数。因此,如果使用类似这样的数字,则可以将它们转换为整数:
CASE WHEN ISNUMERIC(s.col) = 1 THEN CAST(s.col AS INT) END
示例:
WITH sample AS (
SELECT '0025' AS col
UNION ALL
SELECT 'CDE01'
UNION ALL
SELECT '0035'
UNION ALL
SELECT '25'
UNION ALL
SELECT '45'
UNION ALL
SELECT '250'
UNION ALL
SELECT 'XYZ1'
UNION ALL
SELECT '2500')
SELECT CASE WHEN ISNUMERIC(s.col) = 1 THEN CAST(s.col AS INT) END
FROM sample s
您可以在派生表/内联视图中使用它进行比较。您可以使用逻辑向表中添加computed column。
答案 1 :(得分:1)
你想要任何
此代码通过一些LIKE匹配来实现
WITH sample AS (
SELECT '0025' AS col
UNION ALL SELECT 'CDE01'
UNION ALL SELECT '0035'
UNION ALL SELECT '25'
UNION ALL SELECT '45'
UNION ALL SELECT '250'
UNION ALL SELECT 'XYZ1'
UNION ALL SELECT 'XYZ125'
UNION ALL SELECT '125'
UNION ALL SELECT '2500')
SELECT
s.col
FROM
sample s
WHERE
col = '25'
OR
(REPLACE(col, '25', '00') NOT LIKE '%[^0]%' AND col LIKE '%25')
答案 2 :(得分:0)
这个怎么样?
SELECT * FROM [TABLE NAME] FILENUMBER喜欢'%25'
答案 3 :(得分:0)
请使用此方法从表中获取具有与逗号分隔值完全匹配的值的所有行。
SELECT * FROM TABNAME WHERE FILENUMBER in ('25','0025','xyz')
它将选择包含文件编号为25或0025或xyz的所有行。
答案 4 :(得分:0)
如果可以安全地修复数据......那就行了。
尝试这样的事情
更新 set filename = cast(filename as int) 其中文件名如'%[1-9]%' - 中有一个数字 和'%[^ a-z]%'这样的文件名 - 中没有字母