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

Demo on DB Fiddle:

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        |