我这里有一个数据集示例:
船名 |
---|
联邦快递国际经济® |
联邦快递陆运® |
FedEx® International Connect Plus |
联邦快递国际优先® |
联邦快递®国际连接增强版 |
联邦快递国际优先® |
联邦快递国际优先® |
但是,我想删除所有特殊字符,这样我就可以将它们适当地分组在一起。我意识到我可以只使用 UPPER(),但是我需要以任何方式删除它们。
因为某些字符不在字符串的两端,所以简单的 Right() 或 Left() 不起作用。
它应该像在色谱柱上使用
replace
功能一样简单:
select ShipName = replace(ShipName, '®', '')
from Shipping
SQL 小提琴:http://sqlfiddle.com/#!18/6f4d2/1
进一步阅读:https://learn.microsoft.com/en-us/sql/t-sql/functions/replace-transact-sql?view=sql-server-ver16
您可以使用函数来删除特殊字符。
CREATE FUNCTION [dbo].[funRemoveSpecialCharacters](@Input NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE @KeepValues AS VARCHAR(50)
SET @KeepValues = '%[^a-z0-9/]%'
WHILE PATINDEX(@KeepValues, @Input) > 0
SET @Input = STUFF(@Input, PATINDEX(@KeepValues, @Input), 1, '')
RETURN @Input
END
使用方法:
SELECT [dbo].[funRemoveSpecialCharacters] ('FedEx International Economy®');