Sql 在选择期间用字符替换多个空格
我有一些字段值包含5个空格作为分隔符,例如Sql 在选择期间用字符替换多个空格,sql,substitution,Sql,Substitution,我有一些字段值包含5个空格作为分隔符,例如 AWERDC 123 我每周做一次摘录,最终提交给外部团体,但这些特定值中的任何一个都需要用“#”替换(AWERDC#123)。我正在寻找在选择过程中进行变换的最佳方法 我能做什么?如果您使用的是SQL Server,并且始终有5个空格,则可以使用replace(),如下示例: declare @s varchar(100) = 'AWERDC 123' select replace(@s, ' ', '#') 返回: AWERDC
AWERDC 123
我每周做一次摘录,最终提交给外部团体,但这些特定值中的任何一个都需要用“#”替换(AWERDC#123
)。我正在寻找在选择过程中进行变换的最佳方法
我能做什么?如果您使用的是SQL Server,并且始终有5个空格,则可以使用
replace()
,如下示例:
declare @s varchar(100) = 'AWERDC 123'
select replace(@s, ' ', '#')
返回:
AWERDC#123
如果存在数量可变的空格,则可以使用stuff()
、charindex()
和patindex()
处理这些空格。本例取决于可变空格数前的字符为字母,空格后的字符为数字。如果数据不正确,则必须相应地修改patindex()
declare @s varchar(100) = 'AWERDC 123'
select stuff(@s, charindex(' ', @s, 1), patindex('%[0-9]%', @s) - charindex(' ', @s, 1), '#')
它总是返回AWERDC#123
,而不管有多少空格
这是一种改进的方法,它不关心前导字符和尾随字符中的字符类型。它只需处理数量可变的空格,因为它会向前搜索第一个空格,然后向后搜索第一个空格(在字符串中),进行计算,然后使用stuff()
插入一个
来代替所有空格:
您可以在查询中尝试一个简单的替换
SELECT REPLACE([Column], ' ','#') From [dbo.Table]
它总是正好5个空格,还是最多5个空格?您使用的是哪种DBMS?答案取决于DBMS,例如,在TSQL中,您可以使用
replace
SELECT REPLACE([Column], ' ','#') From [dbo.Table]