SQL Server Right() 函数从列上的某个点删除字符

Spi*_*n50 3 t-sql sql-server

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

例子...

前:

0002    55  Actor Hill - 0002
0004    57  Adair - 0004
0005    74  Adams - 0005
Run Code Online (Sandbox Code Playgroud)

后:

0002    55  Actor Hill 
0004    57  Adair 
0005    74  Adams 
Run Code Online (Sandbox Code Playgroud)

KM.*_*KM. 5

在 SQL Server 中试试这个:

DECLARE @String varchar(50)
SET @String='0002 55 Actor Hill - 0002'
SELECT LEFT(@String,CHARINDEX(' - ',@String)-1)
Run Code Online (Sandbox Code Playgroud)

输出:

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

(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

这是一个使用表格的示例:

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
Run Code Online (Sandbox Code Playgroud)

输出:

-------------------- ---------------------
0002 55 Actor Hill   |0002 55 Actor Hill|
0004 57 Adair        |0004 57 Adair|
0005 74 Adams        |0005 74 Adams|

(3 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

我用|字符来显示没有尾随空格

更改实际数据使用:

UPDATE @YourTable
    SET RowValue=LEFT(RowValue,CHARINDEX(' - ',RowValue)-1)
Run Code Online (Sandbox Code Playgroud)