sql - SQL Server 替换列值中的不同字符
问题描述
我有一个条形码列,其中包含一些数据,如下所示:
Z1B1S1A -- Zone 1 Bay 1 Shelf 1A
Z10B10S10B -- Zone 10 Bay 10 Shelf 10B
想将它们替换为:
01-01-01A -- I think I can get by with 1-1-1A
10-10-10B
zone、bay、shelf 可以从 1 到 99。
我的问题是与 1 位或 2 位数字不一致,最后一个字符“B”可能被误认为是 Bay 号。
感谢您的任何帮助。
解决方案
2 解决方案。第一个解决方案来自Analyst & DeepShiKha 1. 第一个解决方案的帮助和想法
-- SUBSTRING ( expression ,start , length )
-- CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
select substring(Barcode,2,charindex('B',barcode)-2) AS Zoney,
substring(Barcode,charindex('B',Barcode)+1, charindex('S',Barcode)-charindex('B',Barcode)-1) AS Bay,
substring(Barcode,charindex('S',Barcode)+1,len(Barcode)) AS Shelf,
concat (
substring(Barcode,2,charindex('B',barcode)-2),'-',
substring(Barcode,charindex('B',Barcode)+1, charindex('S',Barcode)-charindex('B',Barcode)-1), '-',
substring(Barcode,charindex('S',Barcode)+1,len(Barcode))
) AS ZBS
from TB_BarcodeTag4
where Barcode LIKE 'Z%B%S%'
2. Second solution is from my own
UPDATE TB_BarcodeTag4
SET Barcode = STUFF(Barcode, LEN(Barcode),1, '&')
WHERE Barcode LIKE 'Z%B%S%' AND Barcode like '%B'
UPDATE TB_BarcodeTag4
SET Barcode = REPLACE(REPLACE(REPLACE(Barcode, 'Z', ''),'B','-'),'S','-')
WHERE Barcode LIKE 'Z%B%S%'
UPDATE TB_BarcodeTag4
SET Barcode = STUFF(Barcode, LEN(Barcode),1, 'B')
WHERE Barcode LIKE 'Z%B%S%' AND Barcode like '%&'
推荐阅读
- python - 使用 List 切片 Numpy 数组
- java - cmd中的“java -version”没有结果
- python - Python中的圆和弦图
- c# - 如何处理与 HttpClient 的并发冲突?
- macos - 无法在 MacOS 上使用 gfortran 在 makefile 中链接 BLAS 和 LAPACK
- scope - 在 Coq 中模拟全局和局部变量
- python - 从字典和字符串格式创建表 - Python
- powershell - Powershell - 删除过滤文件夹中的文件
- abp - abp 套件导航属性不起作用
- java - 在多模块Maven项目中共享集成测试