我在名为描述的数据库中有一个字段,它是 text 的数据类型。第一行数据始终取自"客户名称"另一个数据库的字段,第一次回车后的任何内容都包含在此客户端上获取的内部注释。
示例:
This is the first line.
NOTES: This is the second line that has notes.
我希望能够查询此字段,只返回"这是第一行。"部分,以及如何更新此字段。有时客户端名称会更改,我们希望更新此字段,但保留可能存在的任何符号。
答案 0 :(得分:3)
您可以对LEFT/CHARINDEX
使用简单的字符串操作,例如SELECT
:
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;
REPLACE
UPDATE
:
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;
的 LiveDemo
强>
我认为新行是CHAR(10) + CHAR(13)
。