匹配逗号分隔的字符串

正则表达式
^(\s*'[a-z_A-Z_0-9_\-]+'\s*)+(,+(\s*'[a-z_A-Z_0-9_\-]+'\s*))*$
匹配
'asdf','sdff-dfdsf','fddsdffg'


<script>
var reg = /^(\s*'[a-z_A-Z_0-9_\-]+'\s*)+(,+(\s*'[a-z_A-Z_0-9_\-]+'\s*))*$/;
alert(reg.test("'YYYssdff'"));
alert(reg.test("'YYYssd-ff','YYYssd-ff-1223'"));
alert(reg.test("'YYYs-sdff','YYYssd-ff-1223','dsfgd'"));
</script>
在 SQL 中,如果需要替换逗号分隔字符串中的部分内容,可以通过多种方式实现。例如,可以结合 `REPLACE` 函数和 `CHARINDEX`、`SUBSTRING` 等字符串处理函数来完成更复杂的替换操作。 以下是一些常见的场景及对应的实现方法: ### 替换整个逗号分隔字符串中的特定值 假设有一个逗号分隔字符串 `'1,2,3,4,5'`,需要将其中的 `'3'` 替换为 `'99'`,可以使用 `REPLACE` 函数[^3]: ```sql SELECT REPLACE('1,2,3,4,5', '3', '99') AS ReplacedString; ``` 这将输出:`1,2,99,4,5`。但需要注意的是,这种方式可能会导致错误匹配(如 `'33'` 也会被替换成 `'9999'`),因此适用于精确匹配的情况。 ### 精确替换逗号分隔字符串中的某个元素 若要精确地替换逗号分隔字符串中的某个元素,建议先将字符串拆分为表,然后更新目标行再重新拼接成字符串。 #### 步骤一:将逗号分隔字符串转换为表 可以使用类似引用中提到的自定义函数 `Func_SplitStrToTable` 来将字符串拆分成表[^1]: ```sql SELECT * FROM dbo.Func_SplitStrToTable('1,2,3,4,5'); ``` 该语句会返回一个包含单列 `str2table` 的表。 #### 步骤二:更新表中的特定值 假设已经将字符串转换为临时表 `#TempTable`,可以使用如下语句进行更新: ```sql UPDATE #TempTable SET str2table = '99' WHERE str2table = '3'; ``` #### 步骤三:将更新后的表重新拼接为逗号分隔字符串 使用 `STUFF` 和 `FOR XML PATH` 方法重新生成字符串[^2]: ```sql DECLARE @Result VARCHAR(8000); SELECT @Result = STUFF((SELECT ',' + str2table FROM #TempTable FOR XML PATH('')), 1, 1, ''); SELECT @Result AS UpdatedString; ``` ### 使用 `CASE WHEN` 进行替换 对于简单的替换逻辑,也可以直接在查询中使用 `CASE WHEN`: ```sql SELECT CASE WHEN value = '3' THEN '99' ELSE value END AS UpdatedValue FROM dbo.Func_SplitStrToTable('1,2,3,4,5'); ``` ### 直接替换字符串并处理多余逗号 如果你希望替换后去掉多余的逗号,可以在替换后使用 `REPLACE` 删除重复的逗号: ```sql SELECT REPLACE(REPLACE('1,2,3,4,5', '3', ''), ',,', ',') AS CleanedString; ``` 这段代码首先移除 `'3'`,然后再用 `REPLACE` 去掉可能产生的连续逗号。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值