搜索仅具有多个前导和尾随空格的SQL Server表列

我正在从SQL Server表中选择数据,该表具有前导空格字符(可以是一个,两个或更多),并且还具有尾随空格(可以是一个,两个或更多)。

我已经使用LIKE ' %'搜索前导空格值,并使用LIKE '% '来跟踪尾随空格记录,但是显示的搜索结果仅返回仅包含一个空格作为前导/尾随空格的记录。但是我不确定记录中可用的数字空间。

这是我尝试过的查询:

SELECT [ColumName1],[ColumName],* 
FROM [table1]  
WHERE [ColumName] LIKE ' %' OR [ColumName] LIKE '% '

预期结果:

'   Testdata1','Test2  ',' Test3','     Test4 '

但是实际结果是:

'Test3 '
chendy0899 回答:搜索仅具有多个前导和尾随空格的SQL Server表列

有一种更简单的方法,无需使用喜欢即可。 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
,

尝试将LTRIMRTRIMLIKE运算符一起使用以查找空格。让我举个例子:

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

大家都在问