用%SQL server替换第一个或最后一个字符是*

时间:2017-01-10 15:57:23

标签: sql sql-server

我有字符串:

*rg*niza*io* 

我想在字符串的第一个和最后一个字符中替换%。期望的出局是:

%rg*niza*io%

4 个答案:

答案 0 :(得分:3)

我只是回答,因为对我来说显而易见的是:

select '%' + substring(str, 2, len(str) - 2) + '%'

当然,如果要在'*'时有条件地替换字符,这会有点复杂。

答案 1 :(得分:1)

如果您想从第一个和最后一个位置仅用*替换%。然后,

<强>查询

SELECT CASE
        WHEN LEFT([string_column], 1) = '*' AND  RIGHT([string_column], 1) = '*' 
        THEN '%' + SUBSTRING([string_column], 2, LEN([string_column]) - 2) + '%'  
        WHEN LEFT([string_column], 1) = '*' AND RIGHT([string_column], 1) <> '*' 
        THEN '%' + RIGHT([string_column], LEN([string_column]) - 1)
        WHEN LEFT([string_column], 1) <> '*' AND RIGHT([string_column], 1) = '*' 
        THEN LEFT([string_column], LEN([string_column]) - 1) + '%'
        ELSE [string_column] END AS [updated_string_column]
FROM [your_table_name];

Demo

答案 2 :(得分:0)

使用STUFFLEFTLEN字符串函数

Declare @string varchar(50) = '*rg*niza*io*'

select stuff(left(@string,len(@string)-1),1,1,'%')+'%'

结果: %rg*niza*io%

答案 3 :(得分:0)

结合使用CONCATLEFTSUBSTRING&amp; LEFT函数。

SELECT CONCAT('%',LEFT(SUBSTRING(yourfield,2,LEN(yourfield)),LEN(yourfield)-2),'%')
FROM yourtable

输出:%rg*niza*io%