SQL:仅替换特定字符的第一个

时间:2019-09-17 19:41:24

标签: sql sql-server ssms

我正在尝试替换SQL查询中某个字符的第一个字符。 就我而言,我尝试将第一个“-”替换为“;”,而不是第二个

这是我尝试过的查询的简化版本,但同时替换了两个“-”

SELECT REPLACE (xColumn, '-',';')FROM xTable

示例1:

原始数据: COMP-LAP-0001

我的结果: COMP; LAP; 0001

预期结果: COMP; LAP-0001

示例2:

原始数据: COMP-0001

我的结果: COMP; 0001

预期结果: COMP; 0001

1 个答案:

答案 0 :(得分:2)

您可以使用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        |
相关问题