在 SQL 服务器中,如何检查列值是否仅包含零
In the SQL Server, how can i check if the column value contains only zero
假设:将 Sample 视为数据库,将 Column_Name 视为 table。
示例输入:
Column_Name
12345
000
00
00000
输出:
Column_Name
000
00
00000
Select * from Sample.Column_Name where Column_Name like '[0]+'
以上代码有效
正确的方法是什么?
您可以像这样使用 not like
和通配符:
where column_name not like '%[^0]%'
为了确保有一个零:
where column_name not like '%[^0]%' and column_name like '%0%'
你也可以使用replace()
:
where replace(column_name, '0', '') = ''
甚至 try_convert()
:
where try_convert(int, column_name) = 0
但是,这也接受 -0
、+0
和空格。
select * from Sample.Column_Name where isnumeric(Column_Name) = 1 and cast(Column_Name as int) == 0
精确解应该是:
SELECT *
FROM Sample.Column_Name
WHERE Column_Name = REPLICATE('0', LEN(Column_Name ));
假设 Column_Name 是 VARCHAR 数据类型列
假设:将 Sample 视为数据库,将 Column_Name 视为 table。
示例输入:
Column_Name
12345
000
00
00000
输出:
Column_Name
000
00
00000
Select * from Sample.Column_Name where Column_Name like '[0]+'
以上代码有效 正确的方法是什么?
您可以像这样使用 not like
和通配符:
where column_name not like '%[^0]%'
为了确保有一个零:
where column_name not like '%[^0]%' and column_name like '%0%'
你也可以使用replace()
:
where replace(column_name, '0', '') = ''
甚至 try_convert()
:
where try_convert(int, column_name) = 0
但是,这也接受 -0
、+0
和空格。
select * from Sample.Column_Name where isnumeric(Column_Name) = 1 and cast(Column_Name as int) == 0
精确解应该是:
SELECT *
FROM Sample.Column_Name
WHERE Column_Name = REPLICATE('0', LEN(Column_Name ));
假设 Column_Name 是 VARCHAR 数据类型列