![](/img/trans.png)
[英]How to find duplicates in a SQL Server table which has trailing spaces values in a column
[英]Search SQL Server table column which has multiple leading and trailing spaces only
我正在从 SQL 服务器表中选择数据,该表具有前导空格字符(可能是一个、两个或更多),也有尾随空格(可能是一个、两个和更多)。
我使用LIKE ' %'
搜索前导空格值,并使用LIKE '% '
作为尾随空格记录,但显示的搜索结果仅返回只有一个空格作为前导/尾随空格的记录。 但我不确定记录中可用的数字空间。
这是我尝试过的查询:
SELECT [ColumName1], [ColumName], *
FROM [table1]
WHERE [ColumName] LIKE ' %' OR [ColumName] LIKE '% '
预期结果:
' Testdata1', 'Test2 ', ' Test3',' Test4 '
但实际结果是:
'Test3 '
有一种更简单的方法可以做到这一点,而无需使用喜欢。 TRIM
切断尾随空格,您可以使用它来过滤。 您在这里所做的是将每个[ColumName]
的修剪版本与未修剪版本进行比较,并返回不同的版本。 这完成了你想要的。
select
[ColumName1], [ColumName], *
from [table1]
WHERE TRIM([ColumName]) <> [ColumName]
这将生成具有任何(一个或多个)尾随或前导空格的所有字段。
根据您的 SQL 服务器版本, TRIM
可能不可用。 无论如何,也有解决方法:
select
[ColumName1], [ColumName], *
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 服务器的LIKE
允许字符集。 我们可以通过排除我们允许的字符(字母和数字)来使用它来查找控制和空白字符。 请试试:
SELECT *
FROM [table1]
WHERE [ColumName] LIKE '[^A-Za-z0-9]%' OR [ColumName] LIKE '%[^A-Za-z0-9]';
尝试将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)),字符(9),字符(32))))
试试下面的答案。
在这里,我使用spaces
和tabs
插入值。 它会给我所有可能的结果。
架构:
CREATE TABLE A(ColumnName VARCHAR(100))
INSERT INTO A VALUES(' Test1')
INSERT INTO A VALUES(' Test2')
INSERT INTO A VALUES('Test3 ')
INSERT INTO A VALUES('Test4 ')
INSERT INTO A VALUES('Test5')
T-SQL:
SELECT *
FROM A
WHERE ColumnName LIKE ' %' OR ColumnName LIKE '% '
OR ColumnName LIKE ' %' OR ColumnName LIKE '% '
检查SQL 小提琴中的结果
希望它能解决你的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.