首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要确保字符串之间有连字符

需要确保字符串之间有连字符
EN

Stack Overflow用户
提问于 2019-07-30 19:37:15
回答 3查看 76关注 0票数 3

我需要检查b/w采购和ww中的字符长度:-it应大于1,如果存在空格(采购ww),请替换为连字符(如采购-ww)。-if之间不存在字符串(如采购ww),然后在其间添加连字符(如采购-ww)

输入:

代码语言:javascript
复制
 -------------------------
 Procurement-ww13'18
 -------------------- 
 Procurement ww13'18
 --------------------
 Procurementww12'18
 --------------------
 Procurement ww12'18 abc-as
 --------------------
 Procurement ww11'18 NON-VMI (copy 5551)
 --------------------

我已经尝试过使用Replace和Stuff函数。但是我不能得到结果。

第一个解决方案

代码语言:javascript
复制
 declare @versionid int = 123, @versionname varchar(50) = 'Procurement ww12''18'
 If (@versionname not like '%-%')
 SELECT STUFF(@versionname,12,1,'-')
 print @versionname

--第二个解决方案

代码语言:javascript
复制
 declare @versionid int = 123, @versionname varchar(50) = 'Procurement  ww12''18'
 If (@versionname not like '%-%')
 SELECT replace(@versionname,'procurement ','Procurement-')
 print @versionname 

输出:(连字符,在‘采购’和‘ww’之间)

代码语言:javascript
复制
 -------------------------------
 Procurement-ww13'18
 --------------------
 Procurement-ww13'18
 --------------------
 Procurement-ww12'18
 --------------------
 Procurement-ww12'18 abc-as
 --------------------
 Procurement-ww11'18 NON-VMI (copy 5551)
 --------------------
EN

回答 3

Stack Overflow用户

发布于 2019-07-30 19:55:54

以下选项将解决您的大多数情况-

代码语言:javascript
复制
DECLARE @input_string VARCHAR(MAX) =  'Procurement  ww13''18'

SELECT 'Procurement-'+
    SUBSTRING(@input_string,CHARINDEX('WW',@input_string,0),LEN(@input_string))

这将始终将‘Procurement’作为静态值,然后该方法将从'ww‘开始的rest字符串添加到带有静态值的末尾。

票数 2
EN

Stack Overflow用户

发布于 2019-07-30 20:11:03

只有当值不是Procurement-ww并且至少存在ww时,才可以使用SUBSTRINGww获取值,并将其附加到硬编码的Procurement-中。

代码语言:javascript
复制
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

结果:

代码语言:javascript
复制
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

如果您需要在变量中检查它:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2019-07-30 19:55:41

您可以简单地使用replace:

代码语言:javascript
复制
select replace(replace (@versionname,'Procurement ww','Procurement-ww'),'Procurementww' , 'Procurement-ww') from YOURTABLE
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57270771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档