首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >查找并更改字符串第一部分中的特定数字,然后将其替换

查找并更改字符串第一部分中的特定数字,然后将其替换
EN

Stack Overflow用户
提问于 2017-04-24 16:02:30
回答 3查看 62关注 0票数 0

我开始在老项目上工作,有一个sql server数据库列,它存储文章编号,例如:

代码语言:javascript
代码运行次数:0
运行
复制
11.1006.45
11.1006.46
11.1006.47
01.10012.11
01.10012.12
2.234.1
2.234.2
2.234.3
657.104324.32

每个数字包含3个部分。第一部分描述它是什么产品,这是我必须改变的东西,当用户为特定产品选择不同的数字时。例如,产品编号2现在将是13,因此根据我们的示例:

代码语言:javascript
代码运行次数:0
运行
复制
2.234.1
2.234.2
2.234.3

现在必须这样做:

代码语言:javascript
代码运行次数:0
运行
复制
13.234.1
13.234.2
13.234.3

我正在寻找sql查询,这将找到所有的记录,其中生产编号是例如2.xxxxx,然后替换为13.xxxxx。我希望这个查询是安全的,以避免任何关于数字的问题,replacments.Hope你明白我的意思。

EN

回答 3

Stack Overflow用户

发布于 2017-04-24 16:15:16

你可以用它来更新。'2.和13.‘可以是任何其他字符串

代码语言:javascript
代码运行次数:0
运行
复制
DECLARE @SampleTable AS TABLE
(
   Version varchar(100)
)

INSERT INTO @SampleTable
VALUES
  ('11.1006.45'),
  ('11.1006.46'),
  ('11.1006.47'),
  ('01.10012.11'),
  ('01.10012.12'),
  ('2.234.1'),
  ('2.234.2'),
  ('2.234.3'),
  ('657.104324.32')


UPDATE @SampleTable
SET
   Version = '13.' + substring(Version, charindex('.', Version) + 1, len(Version) - charindex('.', Version))
WHERE Version LIKE '2.%'

SELECT * FROM @SampleTable st

演示链接:Rextester

票数 1
EN

Stack Overflow用户

发布于 2017-04-24 16:06:28

update t set t.col= replace(您的列,子字符串(您的列,1,字符索引(‘.,您的列,1),2)从表t

这将查找第一个点之前的第一个字符

代码语言:javascript
代码运行次数:0
运行
复制
substring(yourcol,1,charindex('.',yourcol,1)

然后使用replace,将其替换为您需要的任何内容

票数 0
EN

Stack Overflow用户

发布于 2017-04-24 19:28:23

您可以使用此查询进行多次更新,

代码语言:javascript
代码运行次数:0
运行
复制
DECLARE @Temp AS TABLE
(
   ArtNo VARCHAR(100)
)

INSERT INTO @Temp
VALUES
  ('11.1006.45'),
  ('11.1006.46'),
  ('11.1006.47'),
  ('01.10012.11'),
  ('01.10012.12'),
  ('2.234.1'),
  ('2.234.2'),
  ('2.234.3'),
  ('657.104324.32')


UPDATE @Temp
SET ArtNo = CASE    WHEN SUBSTRING(ArtNo,1,CHARINDEX('.',ArtNo)-1) = '2' THEN STUFF(ArtNo,1,CHARINDEX('.',ArtNo)-1,'13')
                    WHEN SUBSTRING(ArtNo,1,CHARINDEX('.',ArtNo)-1) = '11' THEN STUFF(ArtNo,1,CHARINDEX('.',ArtNo)-1,'15')
                    ELSE  ArtNo
            END

SELECT * FROM @Temp
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43582779

复制
相关文章

相似问题

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