我在field1中有1到50个空格的数据(不是空,但没有文本)。我需要搜索所有这些字段以便修剪。
*从table1中选择*,其中field1 =' ' * 不会捕获包含更多空格的记录。使用> =或< =包含我不想更新的实际文字记录。
有没有办法只捕获没有实际文本的记录?
答案 0 :(得分:1)
在sql server中,尾随空格被忽略。因此,查询将返回没有空格或50个空格的行。您是否只想要具有多个空间的那些并且只排除那些只有一个空格的空间?或者如果他们只有空格,你就不要他们了。你可以使用替换。
select *
from table1
where replace(field1, ' ', 'x') = ''
是的,很容易证明尾随空格被忽略了。
with SpacesDemo as
(
select ' ' as Spaces, 1 as NumSpaces union all
select ' ', 10
)
select *
from SpacesDemo
where Spaces = ''
我怀疑你的数据中没有空格。
答案 1 :(得分:0)
您可以使用like
:
select t.*
from t
where field1 not like '%[^ ]%' and field1 like '% %';
您可以在角色类中包含您想要的任何字段,因此这很容易推广到您可能考虑的空间。
答案 2 :(得分:0)
like运算符可以类似于regex使用
select * from table1 where field1 LIKE '^[ ]{1,}'
答案 3 :(得分:0)
在Transact-SQL(SQLServer)中,有TRIM函数可以从字符串的开头和结尾删除空白字符(或其他取决于参数)。
您的查询应该看起来更少或像这样:
SELECT * FROM table1 WHERE TRIM(field1) = '';
类似的功能都在Oracle和PostgreSQL
中