删除注册商标SQL

问题描述 投票:0回答:2

我这里有一个数据集示例:

船名
联邦快递国际经济®
联邦快递陆运®
FedEx® International Connect Plus
联邦快递国际优先®
联邦快递®国际连接增强版
联邦快递国际优先®
联邦快递国际优先®

但是,我想删除所有特殊字符,这样我就可以将它们适当地分组在一起。我意识到我可以只使用 UPPER(),但是我需要以任何方式删除它们。

因为某些字符不在字符串的两端,所以简单的 Right() 或 Left() 不起作用。

sql sql-server special-characters data-cleaning trim
2个回答
0
投票

它应该像在色谱柱上使用

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


0
投票

您可以使用函数来删除特殊字符。

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®');

© www.soinside.com 2019 - 2024. All rights reserved.