2013-07-24 106 views
1

我有一个要求与SQL星号(*),例如替换字符串的第一个和最后2个字符:最快方式

输入 :123456

输出**34**

这是多么我已经做到了,反正是有,我可以改进下面的脚本(使其更短,少打电话内置函数来获得所需要的输出等? )

DECLARE @Number VARCHAR(64) 
SET @Number = '123456789' 

IF(LEN(@Number) >= 5) 
BEGIN 

--Remove the first two characters 
SET @Number = SUBSTRING(@Number,3,LEN(@Number)) 

--Remove the last two characters 
SET @Number = SUBSTRING(@Number,0,LEN(@Number)- 1) 

--Add two asterisks at front and end 
SEt @Number = '**' + @Number + '**' 

SELECT @Number 
END 

回答

2

试试这个方法:

DECLARE @Number VARCHAR(64) 
SET @Number = '123456789' 

select '**'+substring(@Number,3,len(@Number)-4)+'**' 

SQL Fiddle Demo

2

您可以尝试STUFF功能

SET @Number = STUFF(STUFF(@Number,1,2,'**'),LEN(@Number)-1,2,'**') 

SQLFiddle DEMO