SQL:只替换某个字符的第一个
SQL: Replacing only the first of a certain character
我正在尝试替换 SQL 查询中某个字符的第一个字符。
在我的例子中,我试图用“;”替换第一个“-”,而不是第二个
这是我试过的查询的简化版本,但它替换了两个“-”
SELECT REPLACE (xColumn, '-',';')FROM xTable
示例 1:
原始数据:COMP-LAP-0001
我的结果:COMP;LAP;0001
预期结果:COMP;LAP-0001
示例 2:
原始数据:COMP-0001
我的结果:COMP;0001
预期结果:COMP;0001
您可以使用 CHARINDEX()
定位给定字符在字符串中的第一次出现,然后将其替换为 STUFF()
:
SELECT STUFF(xColumn, CHARINDEX('-', xColumn), 1, ';') FROM xTable
WITH xTable AS (
SELECT 'COMP-LAP-0001' xColumn
UNION ALL SELECT 'COMP-0001'
)
SELECT STUFF(xColumn, CHARINDEX('-', xColumn), 1, ';') FROM xTable
| (No column name) |
| :--------------- |
| COMP;LAP-0001 |
| COMP;0001 |
我正在尝试替换 SQL 查询中某个字符的第一个字符。 在我的例子中,我试图用“;”替换第一个“-”,而不是第二个
这是我试过的查询的简化版本,但它替换了两个“-”
SELECT REPLACE (xColumn, '-',';')FROM xTable
示例 1:
原始数据:COMP-LAP-0001
我的结果:COMP;LAP;0001
预期结果:COMP;LAP-0001
示例 2:
原始数据:COMP-0001
我的结果:COMP;0001
预期结果:COMP;0001
您可以使用 CHARINDEX()
定位给定字符在字符串中的第一次出现,然后将其替换为 STUFF()
:
SELECT STUFF(xColumn, CHARINDEX('-', xColumn), 1, ';') FROM xTable
WITH xTable AS (
SELECT 'COMP-LAP-0001' xColumn
UNION ALL SELECT 'COMP-0001'
)
SELECT STUFF(xColumn, CHARINDEX('-', xColumn), 1, ';') FROM xTable
| (No column name) | | :--------------- | | COMP;LAP-0001 | | COMP;0001 |