在sql列的最后两个字符前插入一个句点

时间:2013-11-06 15:31:41

标签: sql sql-server

你好我在sql中有一个列,我需要插入一个“。”在最后两个字符之前。该列不是固定长度。有人可以帮我解决这个问题吗?

4 个答案:

答案 0 :(得分:4)

您可以使用UPDATE和SUBSTRING来完成。

UPDATE table
SET column = (SELECT SUBSTRING(column, 1, LEN(column)-2) 
              + '.' 
              + SUBSTRING(column, LEN(column)-1, LEN(column))

如果您想查看查询对您的列执行的操作,请使用:

SELECT 
    SUBSTRING(column, 1, LEN(column)-2) 
    + '.' 
    + SUBSTRING(column, LEN(column)-1, LEN(column))
FROM table

答案 1 :(得分:1)

看起来很乱,但应该这样做:

SELECT LEFT(COL_NAME, LEN(COL_NAME)-1)+'.'+RIGHT(COL_NAME,1)
FROM Table

或者,如果您想更新数据库中的值而不仅仅是输出

Update Table 
SET COL_NAME = LEFT(COL_NAME, LEN(COL_NAME)-1)+'.'+RIGHT(COL_NAME,1)

答案 2 :(得分:1)

您可以像这样使用sp_rename

EXEC sp_rename 'dbo.DatabaseName.ColumnName', 'ColumnNa.me', 'COLUMN';

如果你需要将它应用于多个列,那么我建议使用substring方法。没有真正用于在列上只有一个UPDATE

答案 3 :(得分:1)

问题不是很清楚。如果您尝试将. before last 2 characters插入column data,则可以使用STUFF()功能。

例如:

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

应用于您的表格查询:

Select Stuff(yourCol, Len(yourCol)-1, 0, '.')
From yourTable

请注意如果 Len(yourCol) 小于 2,则会返回空字符串。