2011-01-29 44 views
0

我有了,如果我要选择具有FileNumber 25行,可以有一个像如何在一个字符串格式中选择一个数字,多数民众赞成

Id  FileNumber 
------------------ 
1  0025 
2  CDE01 
3  0035 
4  25 
5  45 
6  250 
7  XYZ1 
8  2500 

现在值的列一个表,我怎么能懂吗。我不想要250或2500的行。搜索应该只能得到0025和25.这个列的类型是varchar。然而,我应该能够搜索任何值,如XYZ1或0025或250

我尝试使用Like运算符例如:WHERE FileNumber Like'%25%'也尝试过WHERE FileNumber像'25%'不给我期望的结果 任何帮助将不胜感激

+1

这就是为什么正确的数据分型很重要 – 2011-01-29 05:57:55

+1

我喜欢字段名是FileNUMBER,它包含字符=) – bitxwise 2011-01-29 11:00:08

+0

首先你必须定义什么*你*用'字符串格式的数字'来理解,因为如果你问* SQL Server *(特别是通过`ISNUMERIC`),它会告诉你,例如'2E1'是一个数字以及'20'和'0020',并且所有三个都具有相同的值20. – 2011-01-29 12:42:20

回答

0

这个怎么样?

SELECT * FROM [表名称] 其中FileNumber LIKE '%25'

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

0

请使用此来获取表中所有具有与逗号分隔值完全匹配的值的行。

SELECT * FROM TABNAME WHERE FILENUMBER in ('25','0025','xyz') 

它将选择包含filenumber为25或0025或xyz的所有行。

1

你想要什么,

  • 比赛正好(25)
  • 结束仅与前导零)(0025)

此代码,与一些像匹配的

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') 
0

如果修复数据是安全的......那就做吧。

尝试是这样的

更新 集的文件名=铸造(文件名作为INT) 其中相同的文件名 '%[1-9]%' --has在它的数 和文件名LIKE“%[^az]%' - 没有字母

相关问题