![](/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.