SQL选择并更新回车前的第一行数据
我在数据库中有一个名为Description的字段,它是文本的数据类型。第一行数据始终取自另一个数据库的“客户机名称”字段,第一个回车后的任何内容都包含此客户机上的内部注释 示例:SQL选择并更新回车前的第一行数据,sql,sql-server,tsql,sql-server-2008-r2,Sql,Sql Server,Tsql,Sql Server 2008 R2,我在数据库中有一个名为Description的字段,它是文本的数据类型。第一行数据始终取自另一个数据库的“客户机名称”字段,第一个回车后的任何内容都包含此客户机上的内部注释 示例: This is the first line. NOTES: This is the second line that has notes. 我希望能够查询此字段,仅返回“this is the first line.”部分,以及如何更新此字段。有时,客户机名称会更改,我们希望更新此字段,但保留可能存在的任何符号
This is the first line.
NOTES: This is the second line that has notes.
我希望能够查询此字段,仅返回“this is the first line.”部分,以及如何更新此字段。有时,客户机名称会更改,我们希望更新此字段,但保留可能存在的任何符号 对于
SELECT
,您可以使用简单的字符串操作,如LEFT/CHARINDEX
:
CREATE TABLE #tab(note VARCHAR(1000));
INSERT INTO #tab VALUES('This is the first line.' + CHAR(10) + CHAR(13) +
'NOTES: This is the second line that has notes.');
SELECT
CASE WHEN CHARINDEX(CHAR(10), note) > 0
THEN LEFT(note, CHARINDEX(CHAR(10), note) - 1)
ELSE note
END AS first_line
FROM #tab;
对于更新
,替换
:
DECLARE @new_value VARCHAR(100) = 'This is updated first line';
UPDATE #tab
SET note = CASE WHEN CHARINDEX(CHAR(10), note) > 0
THEN REPLACE(note,
LEFT(note, CHARINDEX(CHAR(10), note) - 1),
@new_value)
ELSE @new_value
END
-- WHERE ID = ?;
SELECT *
FROM #tab;
我假设新行是
CHAR(10)+CHAR(13)
您应该在两个字段中执行此操作,然后在一个select中连接