SQL:仅替换某个字符的第一个



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

这是我尝试过的查询的简化版本,但它替换了两个"-">

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

示例 1:

原始数据:COMP-LAP-0001

我的结果:COMP;圈;0001

预期成果:COMP;LAP-0001

示例 2:

原始数据:COMP-0001

我的结果:COMP;0001

预期成果:COMP;0001

您可以使用CHARINDEX()来定位字符串中给定字符的第一个匹配项,然后将其替换为STUFF()

SELECT STUFF(xColumn, CHARINDEX('-', xColumn), 1, ';') FROM xTable

DB小提琴上的演示

WITH xTable AS (
SELECT 'COMP-LAP-0001' xColumn
UNION ALL SELECT 'COMP-0001'
)
SELECT STUFF(xColumn, CHARINDEX('-', xColumn), 1, ';') FROM xTable
|(无列名( | |:--------------- | |补偿;LAP-0001 | |补偿;0001 |

最新更新