Sql server SQL Server Right()函数,用于从列上的某个点删除字符

Sql server SQL Server Right()函数,用于从列上的某个点删除字符,sql-server,tsql,Sql Server,Tsql,我正在尝试删除描述列中“-”字符后的文本。我知道我必须使用Right()函数,但是循环遍历所有记录并更改Description列中的所有记录的语法是什么样的 例如 之前: 0002 55 Actor Hill - 0002 0004 57 Adair - 0004 0005 74 Adams - 0005 之后: 0002 55 Actor Hill 0004 57 Adair 0005 74 Adams 在SQL Server中尝试以下

我正在尝试删除描述列中“-”字符后的文本。我知道我必须使用Right()函数,但是循环遍历所有记录并更改Description列中的所有记录的语法是什么样的

例如

之前:

0002    55  Actor Hill - 0002
0004    57  Adair - 0004
0005    74  Adams - 0005
之后:

0002    55  Actor Hill 
0004    57  Adair 
0005    74  Adams 

在SQL Server中尝试以下操作:

DECLARE @String varchar(50)
SET @String='0002 55 Actor Hill - 0002'
SELECT LEFT(@String,CHARINDEX(' - ',@String)-1)
输出:

--------------------------------------------------
0002 55 Actor Hill

(1 row(s) affected)
-------------------- ---------------------
0002 55 Actor Hill   |0002 55 Actor Hill|
0004 57 Adair        |0004 57 Adair|
0005 74 Adams        |0005 74 Adams|

(3 row(s) affected)
下面是一个使用表格的示例:

DECLARE @YourTable table (RowValue varchar(50))
INSERT @YourTable VALUES ('0002 55 Actor Hill - 0002')
INSERT @YourTable VALUES ('0004 57 Adair - 0004')
INSERT @YourTable VALUES ('0005 74 Adams - 0005')

SELECT 
    LEFT(RowValue,CHARINDEX(' - ',RowValue)-1), '|'+LEFT(RowValue,CHARINDEX(' - ',RowValue)-1)+'|'
    FROM @YourTable
输出:

--------------------------------------------------
0002 55 Actor Hill

(1 row(s) affected)
-------------------- ---------------------
0002 55 Actor Hill   |0002 55 Actor Hill|
0004 57 Adair        |0004 57 Adair|
0005 74 Adams        |0005 74 Adams|

(3 row(s) affected)
我使用
|
字符表示没有尾随空格

要更改实际数据使用,请执行以下操作:

UPDATE @YourTable
    SET RowValue=LEFT(RowValue,CHARINDEX(' - ',RowValue)-1)

假设第一列的内容是要从最后一列中删除的内容

UPDATE
   Mytable
SET
   StringField3 = REPLACE(StringField3, ' - ' + NumberLikeField1, '')
这样,您就不必担心诸如

00007    99  Saxa-Cotburg-Gotha - 00007

这是一列还是三列?