sql - SQL Server 替换
问题描述
CREATE TABLE test (a VARCHAR(2000))
INSERT INTO test
VALUES ('This is a AB_CD_test.dbo.ABC'),
('This is a AB_CD.dbo.ABC')
运行Update
查询前的表:
This is a AB_CD_test.dbo.ABC
This is a AB_CD.dbo.ABC
This is a [AB_CD].[dbo].[XYZ]
我正在尝试使用此查询替换AB_CD
关键字AB_CD_test
:
UPDATE [US\AF83767].[test]
SET a = REPLACE(a, 'AB_CD', 'AB_CD_test')
WHERE a LIKE '%AB!_CD%' ESCAPE '!';
但正如预期的那样,数据更改为:
This is a AB_CD_test_test.dbo.ABC
This is a AB_CD_test.dbo.ABC
This is a [AB_CD_test].[dbo].[XYZ]
第二个很好,但第一个应该保持“这是 AB_CD_test.dbo.ABC”。
任何人都可以帮助查询不会更改第一行并且只查找“AB_CD”的出现。
对 SQL 比较陌生,非常感谢您的帮助。
解决方案
目前尚不清楚您要防止什么。您是否只想在存在“Test”或“AB_CD”和“.dbo”之间的任何字符串时阻止替换
我猜是后者,所以我建议:
UPDATE [US\AF83767].[test]
SET a = REPLACE(a, 'AB_CD', 'AB_CD_test')
WHERE a LIKE '%AB!_CD.%' ESCAPE '!';
推荐阅读
- c++ - Z3如何将expr转换为SMT?
- c# - 从 c# 到 html 显示两个具有相同下拉菜单的图像
- javascript - 如何为每个列表创建删除按钮并为订单列表添加编号系统
- angular - 无法准备好未定义的自定义组件的属性
- php - 如何检查第一次出现是 - (减号)还是,(逗号)
- java - 添加行和列的总和
- java - 拆分字符串并删除存储在数组中的逗号 - Java
- python - Python:如何在每年年初为每日时间序列数据创建条件?
- google-bigquery - BigQuery 调度:错误代码 3:user_id 的值为 0 无效
- docker-compose - Docker-compose:与 selinux 一起使用