我有字符串:
*rg*niza*io*
我想在字符串的第一个和最后一个字符中替换%。期望的出局是:
%rg*niza*io%
答案 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)
使用STUFF
,LEFT
和LEN
字符串函数
Declare @string varchar(50) = '*rg*niza*io*'
select stuff(left(@string,len(@string)-1),1,1,'%')+'%'
结果: %rg*niza*io%
答案 3 :(得分:0)
结合使用CONCAT
,LEFT
,SUBSTRING
&amp; LEFT
函数。
SELECT CONCAT('%',LEFT(SUBSTRING(yourfield,2,LEN(yourfield)),LEN(yourfield)-2),'%')
FROM yourtable
输出:%rg*niza*io%