我需要检查b/w采购和ww中的字符长度:-it应大于1,如果存在空格(采购ww),请替换为连字符(如采购-ww)。-if之间不存在字符串(如采购ww),然后在其间添加连字符(如采购-ww)
输入:
-------------------------
Procurement-ww13'18
--------------------
Procurement ww13'18
--------------------
Procurementww12'18
--------------------
Procurement ww12'18 abc-as
--------------------
Procurement ww11'18 NON-VMI (copy 5551)
--------------------我已经尝试过使用Replace和Stuff函数。但是我不能得到结果。
第一个解决方案
declare @versionid int = 123, @versionname varchar(50) = 'Procurement ww12''18'
If (@versionname not like '%-%')
SELECT STUFF(@versionname,12,1,'-')
print @versionname--第二个解决方案
declare @versionid int = 123, @versionname varchar(50) = 'Procurement ww12''18'
If (@versionname not like '%-%')
SELECT replace(@versionname,'procurement ','Procurement-')
print @versionname 输出:(连字符,在‘采购’和‘ww’之间)
-------------------------------
Procurement-ww13'18
--------------------
Procurement-ww13'18
--------------------
Procurement-ww12'18
--------------------
Procurement-ww12'18 abc-as
--------------------
Procurement-ww11'18 NON-VMI (copy 5551)
--------------------发布于 2019-07-30 19:55:54
以下选项将解决您的大多数情况-
DECLARE @input_string VARCHAR(MAX) = 'Procurement ww13''18'
SELECT 'Procurement-'+
SUBSTRING(@input_string,CHARINDEX('WW',@input_string,0),LEN(@input_string))这将始终将‘Procurement’作为静态值,然后该方法将从'ww‘开始的rest字符串添加到带有静态值的末尾。
发布于 2019-07-30 20:11:03
只有当值不是Procurement-ww并且至少存在ww时,才可以使用SUBSTRING从ww获取值,并将其附加到硬编码的Procurement-中。
DECLARE @Input TABLE (
Input VARCHAR(100),
Fixed VARCHAR(100))
INSERT INTO @Input (Input)
VALUES
('Procurement-ww13''18'),
('Procurement ww13''18'),
('Procurementww12''18'),
('Procurement ww12''18 abc-as'),
('Procurement ww11''18 NON-VMI (copy 5551)'),
('Procurement ww11''18 NON-VMI (copy 5551)'),
('Procurement NON-VMI (copy 5551)')
UPDATE I SET
Fixed = 'Procurement-'
+ SUBSTRING(
I.Input,
CHARINDEX('ww', I.Input),
100)
FROM
@Input AS I
WHERE
I.Input NOT LIKE 'Procurement-ww%' AND
I.Input LIKE 'Procurement%ww%'
SELECT
I.Input,
I.Fixed
FROM
@Input AS I结果:
Input Fixed
Procurement-ww13'18 NULL
Procurement ww13'18 Procurement-ww13'18
Procurementww12'18 Procurement-ww12'18
Procurement ww12'18 abc-as Procurement-ww12'18 abc-as
Procurement ww11'18 NON-VMI (copy 5551) Procurement-ww11'18 NON-VMI (copy 5551)
Procurement ww11'18 NON-VMI (copy 5551) Procurement-ww11'18 NON-VMI (copy 5551)
Procurement NON-VMI (copy 5551) NULL如果您需要在变量中检查它:
DECLARE @Input VARCHAR(100) = 'Procurement ww11''18 NON-VMI (copy 5551)'
IF @Input NOT LIKE 'Procurement-ww%' AND @Input LIKE 'Procurement%ww%'
SET @Input = 'Procurement-'
+ SUBSTRING(
@Input,
CHARINDEX('ww', @Input),
100)
SELECT @Input发布于 2019-07-30 19:55:41
您可以简单地使用replace:
select replace(replace (@versionname,'Procurement ww','Procurement-ww'),'Procurementww' , 'Procurement-ww') from YOURTABLEhttps://stackoverflow.com/questions/57270771
复制相似问题