您好,我在 sql 中有一个列,我需要插入一个“。” 在最后两个字符之前。该列不是固定长度。有人可以帮我解决这个问题吗?
问问题
5076 次
4 回答
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
于 2013-11-06T15:34:37.383 回答
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
,将返回一个空字符串。
于 2013-11-06T16:07:56.353 回答
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)
于 2013-11-06T15:35:23.837 回答
1
您可以像这样使用sp_rename:
EXEC sp_rename 'dbo.DatabaseName.ColumnName', 'ColumnNa.me', 'COLUMN';
如果您需要将此应用于多个列,那么我建议使用 substring 方法。只为一列上的一个做这件事并没有真正的用处UPDATE
。
于 2013-11-06T15:35:31.437 回答