有一种更简单的方法,无需使用喜欢即可。 TRIM
会删除结尾的空格,您可以使用它进行过滤。您在这里所做的是将每个[ColumName]
的修剪版本与未修剪版本进行比较,并返回不同的版本。这样就完成了您想要的。
select
[ColumName1],[ColumName],*
from [table1]
WHERE TRIM([ColumName]) <> [ColumName]
这将产生具有任何(一个或多个)尾部或前导空格的所有字段。
取决于您的SQL Server版本,TRIM
可能不可用。没关系,也有一种解决方法:
select
[ColumName1],*
from [table1]
WHERE LTRIM([ColumName]) <> [ColumName]
OR RTRIM([ColumName]) <> [ColumName]
,
您可以尝试一下,
DECLARE @Temp_Table TABLE
(
ColumnName VARCHAR(100)
)
INSERT INTO @Temp_Table
VALUES
(' Test1'),(' Test2'),('Test3 '),('Test4 '),('Test5')
SELECT ColumnName
FROM @Temp_Table
WHERE (LEFT(ColumnName,1)=' ' OR RIGHT(ColumnName,1)=' ')
,
如果我没记错的话,SQL Server的javapackager
允许使用字符集。通过排除允许的字符(字母和数字),我们可以使用它来查找控制字符和空格字符。请尝试:
LIKE
,
尝试将LTRIM
与RTRIM
和LIKE
运算符一起使用以查找空格。让我举个例子:
DECLARE @tbl TABLE
(
FooColumn VARCHAR(100)
)
INSERT INTO @tbl
VALUES
(' Example1'),(' Example2'),('Example3 '),('Example4 '),('Example5')
SELECT
t.FooColumn
FROM @tbl t
WHERE RTRIM(t.FooColumn) LIKE '% %' OR LTRIM(t.FooColumn) LIKE '% %'
,
最后,我发现列值已使用特殊的ascii值保存,因此在使用LTRIM,RTRIM时不会删除这些字符。
工作正常:LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(plaincitation,CHAR(10),CHAR(32))),CHAR(13),CHAR(32)),CHAR(160),CHAR(32) )),CHAR(9),CHAR(32))))
本文链接:https://www.f2er.com/3139717.html