Sql server SQL Server Right()函数,用于从列上的某个点删除字符
我正在尝试删除描述列中“-”字符后的文本。我知道我必须使用Right()函数,但是循环遍历所有记录并更改Description列中的所有记录的语法是什么样的 例如 之前: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中尝试以下
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
这是一列还是三列?