gpt4 book ai didi

sql - 如何从 SQL Server 中的字符串中删除空格字符

转载 作者:行者123 更新时间:2023-12-01 19:16:18 26 4
gpt4 key购买 nike

我尝试从 SQL 中的字符串中删除空格,但 LTRIMRTRIM 函数似乎不起作用?

栏目:

[ProductAlternateKey] [nvarchar](25) COLLATE Latin1_General_CS_AS NULL

查询:

select REPLACE(ProductAlternateKey, ' ', '@'),
LEN(ProductAlternateKey),
LTRIM(RTRIM(ProductAlternateKey)) AS LRTrim,
LEN(LTRIM(RTRIM(ProductAlternateKey))) AS LRLen,
ASCII(RIGHT(ProductAlternateKey, 1)) AS ASCIIR,
ASCII(LEFT(ProductAlternateKey, 1)) AS ASCIIL,
ProductAlternateKey
from DimProducts
where ProductAlternateKey like '46783815%'

结果:

|  COLUMN_0 | COLUMN_1 | LRTrim | LRLen | ASCIIR | ASCIIL | PRODUCTALTERNATEKEY |
---------------------------------------------------------------------------------
| 46783815 | 8 | 46783815| 8| 53 | 52 | 46783815 |
| 46783815 | 10|46783815 | 10| 10 | 52 | 46783815 |

如果LTRIMRTRIM不起作用,是否可以是其他符号,例如“Enter”?

最佳答案

使用ASCII(RIGHT(ProductAlternateKey, 1)),您可以看到第 2 行中最右边的字符是换行符或 Ascii 字符 10。

使用标准 LTrim RTrim 函数无法删除该值。

但是,您可以使用(REPLACE(ProductAlternateKey, CHAR(10), '')

您可能还需要考虑回车符和制表符。这三个(换行符、回车符和制表符)是常见的罪魁祸首,可以通过以下方法删除:

LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(ProductAlternateKey, CHAR(10), ''), CHAR(13), ''), CHAR(9), '')))

如果您遇到任何其他无法通过上述方法删除的“空白”字符,请尝试以下一项或全部操作:

--NULL
Replace([YourString],CHAR(0),'');
--Horizontal Tab
Replace([YourString],CHAR(9),'');
--Line Feed
Replace([YourString],CHAR(10),'');
--Vertical Tab
Replace([YourString],CHAR(11),'');
--Form Feed
Replace([YourString],CHAR(12),'');
--Carriage Return
Replace([YourString],CHAR(13),'');
--Column Break
Replace([YourString],CHAR(14),'');
--Non-breaking space
Replace([YourString],CHAR(160),'');

此潜在空白字符列表可用于创建诸如以下的函数:

Create Function [dbo].[CleanAndTrimString] 
(@MyString as varchar(Max))
Returns varchar(Max)
As
Begin
--NULL
Set @MyString = Replace(@MyString,CHAR(0),'');
--Horizontal Tab
Set @MyString = Replace(@MyString,CHAR(9),'');
--Line Feed
Set @MyString = Replace(@MyString,CHAR(10),'');
--Vertical Tab
Set @MyString = Replace(@MyString,CHAR(11),'');
--Form Feed
Set @MyString = Replace(@MyString,CHAR(12),'');
--Carriage Return
Set @MyString = Replace(@MyString,CHAR(13),'');
--Column Break
Set @MyString = Replace(@MyString,CHAR(14),'');
--Non-breaking space
Set @MyString = Replace(@MyString,CHAR(160),'');

Set @MyString = LTRIM(RTRIM(@MyString));
Return @MyString
End
Go

然后您可以按如下方式使用:

Select 
dbo.CleanAndTrimString(ProductAlternateKey) As ProductAlternateKey
from DimProducts

关于sql - 如何从 SQL Server 中的字符串中删除空格字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14211346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com