WHERE varchar = 0的可变长度

时间:2015-07-31 13:53:03

标签: sql sql-server-2008 tsql

Table_A

ID    Number
--    ------
1     0
2     00
3     0123
4     000000
5     01240
6     000

'Number'列是数据类型varchar。

为清晰起见编辑。 我的问题是,我可以轻松地撤回包含0的可变长度字符串的所有数据行吗?

我试过了:

SELECT *
FROM Table_A
WHERE LEFT(Number,1) = '0' AND RIGHT(Number,1) = '0'

使用上面的内容,它仍将使用提供的示例表返回以下内容。

ID    Number
--    ------
1     0
2     00
4     000000
5     01240
6     000

我正在寻找一个可以将LEN(Number) int传递给的函数,然后它生成一个特定字符的字符串(在我的例子中是一个0的字符串)。我虽然找不到任何东西。

哦,我也尝试在SUBSTRING子句中添加WHERE,但有时Number列的数字中间有一个0,所以它仍然返回字符串除了0之外的其他数字。

SUBSTRING(Number,ROUND(LEN(Number)/2,0),1) = '0'

感谢任何帮助。

5 个答案:

答案 0 :(得分:4)

那么,你想要一个的字符串包含不是一个0的东西吗?听起来像是双重否定的时候了:

SELECT *
FROM Table_A
WHERE NOT Number like '%[^0]%'
AND number like '0%' --But we do want it to contain at least one zero

(最后的检查是为了让我们不匹配空字符串)

答案 1 :(得分:1)

答案:

Where number like '%0%'

答案 2 :(得分:0)

SELECT *
FROM yourtable
WHERE len(Number) - len(replace(number,'0','')) >= 0

另一种方法

答案 3 :(得分:0)

您可以使用此查询:

SELECT * FROM Table_A WHERE Number LIKE'%0%';

它会解决你的问题。

答案 4 :(得分:0)

您也可以使用以下一个,您将获得预期的结果。

SELECT *

FROM Table_A

Nunber不喜欢'%[1-9]%'

感谢。