SQL选择并更新回车前的第一行数据

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.”部分,以及如何更新此字段。有时,客户机名称会更改,我们希望更新此字段,但保留可能存在的任何符号

我在数据库中有一个名为Description的字段,它是文本的数据类型。第一行数据始终取自另一个数据库的“客户机名称”字段,第一个回车后的任何内容都包含此客户机上的内部注释

示例

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中连接