替换更新列的SQL子字符串

替换更新列的SQL子字符串,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我很快就需要你的帮助。。。。我使用SQL2008R2 我有一个专栏,里面有这样的数据 1_kka 2_bge 3_kil 该列应仅包含以下数字: 1 2 3 那么我应该如何使用replace和substring替换它呢 谢谢 在MySQL中,只需在字符串中添加0,您就可以非常轻松地做到这一点: select col + 0 from t +0将字符串视为整数,并自动将字符串开头的任何数字转换为数字 在其他数据库中,类似这样的操作将起作用: select cast(left(col, 1)

我很快就需要你的帮助。。。。我使用SQL2008R2

我有一个专栏,里面有这样的数据

1_kka
2_bge
3_kil 
该列应仅包含以下数字:

1
2
3
那么我应该如何使用replace和substring替换它呢


谢谢

在MySQL中,只需在字符串中添加0,您就可以非常轻松地做到这一点:

select col + 0
from t
+0
将字符串视为整数,并自动将字符串开头的任何数字转换为数字

在其他数据库中,类似这样的操作将起作用:

select cast(left(col, 1) as int)
from t

假设初始数字正好有一个数字(如您问题中的示例所示)。

在MySQL中,只需将0添加到字符串中,就可以非常轻松地做到这一点:

select col + 0
from t
+0
将字符串视为整数,并自动将字符串开头的任何数字转换为数字

在其他数据库中,类似这样的操作将起作用:

select cast(left(col, 1) as int)
from t

假设初始数字正好有一位数字(如您问题中的示例所示)。

如果您使用的是SQL Server,并且数字不限于1位,则可以使用

SELECT SUBSTRING(column, 1, CHARINDEX('_', column)-1)
FROM Table

如果您使用的是SQL Server,并且数字不限于1位,则可以使用

SELECT SUBSTRING(column, 1, CHARINDEX('_', column)-1)
FROM Table

如果下划线前可以出现多个数字,则需要如下内容:

SELECT LEFT(Fieldname,CHARINDEX('_',Fieldname)-1)
FROM table

如果下划线前可以出现多个数字,则需要如下内容:

SELECT LEFT(Fieldname,CHARINDEX('_',Fieldname)-1)
FROM table

这将更新包含下划线的每一行中的所有值

Update TableName
Set FieldName = Substring(FieldName, 1, CharIndex('_', FieldName) - 1)
Where CharIndex('_', FieldName) >= 1

这将更新包含下划线的每一行中的所有值

Update TableName
Set FieldName = Substring(FieldName, 1, CharIndex('_', FieldName) - 1)
Where CharIndex('_', FieldName) >= 1
试试这个:

update <TABLE> set COL = LEFT(COL,CHARINDEX('_', COL)-1)
updateset COL=LEFT(COL,CHARINDEX(''u',COL)-1)
试试这个:

update <TABLE> set COL = LEFT(COL,CHARINDEX('_', COL)-1)
updateset COL=LEFT(COL,CHARINDEX(''u',COL)-1)

抱歉我使用SQL 2012 R2抱歉我使用SQL 2012 R2没有SQL Server 2012 R2。。。要么是2008年,要么是2012年?:)没有SQL Server 2012 R2。。。要么是2008年,要么是2012年?:)