如何在SQL SERVER中将字符添加到指定位置的字符串中?

时间:2013-11-21 12:43:19

标签: sql sql-server

我有一个varchar字段,如:

195500
122222200

我需要将这些值更改为:

1955.00
1222222.00

9 个答案:

答案 0 :(得分:15)

try this

Declare @s varchar(50) = '1234567812333445'
Select Stuff(@s, Len(@s)-1, 0, '.')
--> 12345678123334.45

fiddle demo

答案 1 :(得分:6)

查询:

SELECT col,
       LEFT(col,len(col)-2) + '.' + RIGHT(col,2) as newcol
FROM Table1

结果:

|       COL |     NEWCOL |
|-----------|------------|
|    195500 |    1955.00 |
| 122222200 | 1222222.00 |

答案 2 :(得分:4)

如果你想添加'。'在你的价值的最后两位数之前,你可以做到:

SELECT substring(code,0,len(code)-1)+'.'+substring(code,len(code)-1,len(code))
FROM table1;

sqlfiddle demo

答案 3 :(得分:0)

请尝试:

select 
   Col,
   REVERSE(STUFF(REVERSE(Col), 1, 2, LEFT(REVERSE(Col), 2)+'.'))
from YourTable

SQL Fiddle Demo

答案 4 :(得分:0)

CREATE TABLE #T ( Value VARCHAR(20) )
INSERT INTO #T ( Value ) VALUES ( 195500 ), ( 122222200)

SELECT 
    Value
,   NewValue = CONVERT(DECIMAL(17,2),CONVERT(DECIMAL,Value) / 100)
FROM #T

|     Value |   NewValue |
|-----------|------------|
|    195500 |    1955.00 |
| 122222200 | 1222222.00 |

答案 5 :(得分:0)

请尝试: 从您的表格中选择reverse(stuff(reverse(columnName),3,0,'。'))

答案 6 :(得分:0)

运行类似的东西并提出了此建议,可能会将其更改为功能/ SP以使其可重用。面对的情况是在字符串中的不同位置插入特定字符一定次数。

/*
 --- passed in string or column,  N'C4CB6B22250B'
 --- desired output, C4:CB:6B:22:25:0D
 --- Test values 
 --- declare @strToChange varchar(50) = N'C4:CB:6B:22:25:0B'
 --- declare @strToChange varchar(50) = N'C4CB6B22250B'
*/


declare @strToChange varchar(50) = N'C4CB6B22250B'
IF(SELECT LEN(@strToChange) - LEN(REPLACE(@strToChange, ':', ''))) > 0
    BEGIN
        ---returns count of specified char
        SELECT LEN(@strToChange) - LEN(REPLACE(@strToChange, ':', ''))
    END
        ELSE
    BEGIN
        declare @charCount int = 5; --# of times to insert the char
        declare @shiftPosition int = 2; -- inital insertion shift
        While(@charCount > 0)
            begin
            SET @strToChange = LEFT(@strToChange,len(@strToChange)- @shiftPosition) + ':' + RIGHT(@strToChange,@shiftPosition)
            SET @charCount = @charCount - 1 --decrement charCount for each added char
            SET @shiftPosition = @shiftPosition + 3 ---increment shift position by 3 for the new char and the chars that were already there
        end
    SELECT @strToChange
END

答案 7 :(得分:-1)

请参阅以下代码。您可以在变量中选择符号和索引。

 declare @index int,@sym varchar(10)
 set @sym='#'
 set @index=2
 select left(195500,@index) +''+@sym+''+right(195500,len(195500)-@index) 

答案 8 :(得分:-2)

声明@a varchar(10)='aaa' 选择concat(@ a,'。00')