如何在SQL中移除数据列内的所有非字母字符?
解答
你只需要在现有转大写、修剪空白的逻辑外,嵌套正则替换函数删除所有非A-Z的字符即可,不同运行环境的实现方式如下:
- 支持
REGEXP_REPLACE的主流数据库(MySQL 8.0+、PostgreSQL、Oracle、SQL Server 2017+)
直接使用以下代码:
其中REGEXP_REPLACE(UPPER(TRIM([Name])), '[^A-Z]', '') AS [Name][^A-Z]为正则匹配规则,代表匹配所有不属于大写英文字母的字符,替换为空字符串即可完成清理。 - 低版本SQL Server(2016及更早,不支持原生正则函数)
可以通过自定义标量函数实现字符清理,首先执行以下语句创建函数:
调用时使用:CREATE FUNCTION dbo.RemoveNonAlphaCharacters(@Input NVARCHAR(MAX)) RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @KeepValues AS NVARCHAR(50) = '%[^A-Z]%' WHILE PATINDEX(@KeepValues, @Input) > 0 SET @Input = STUFF(@Input, PATINDEX(@KeepValues, @Input), 1, '') RETURN @Input END GOdbo.RemoveNonAlphaCharacters(UPPER(TRIM([Name]))) AS [Name] - Pandas数据框处理场景
如果你是用Python Pandas做数据清洗,使用以下代码即可:df['Name'] = df['Name'].str.strip().str.upper().str.replace(r'[^A-Z]', '', regex=True)
内容的提问来源于stack exchange,提问作者TeflonMusk
相关产品推荐
相关产品推荐

