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



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

您可以使用 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

它看起来很乱,但这应该可以做到:

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)
你可以

像这样使用sp_rename:

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

如果您需要将其应用于多个列,那么我建议使用子字符串方法。 只对一列的一个UPDATE这样做是没有实际用处的。

问题不是很清楚。如果您尝试将. 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,将返回一个空字符串。

最新更新