首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询select table table

SQL查询select table table
EN

Stack Overflow用户
提问于 2021-12-02 09:34:17
回答 2查看 37关注 0票数 0

我有一个SQL表,其中的列在值之间包含一个分隔符(下划线)。

我想要的是将这些值分成几列并更新这个表。

如下所示:

代码语言:javascript
复制
australia_canada 

应该变成

代码语言:javascript
复制
 col1          col2  
 ---------------------
 australia     canada 

到目前为止,我可以选择这些记录,但不需要更新。

代码语言:javascript
复制
SELECT 
    nationality_1,
    REVERSE(PARSENAME(REPLACE(REVERSE(nationality_1), '_', '.'), 1)) AS [nationality_1], 
    REVERSE(PARSENAME(REPLACE(REVERSE(nationality_1), '_', '.'), 2)) AS [nationality_2],
    REVERSE(PARSENAME(REPLACE(REVERSE(nationality_1), '_', '.'), 3)) AS [nationality_3]
FROM 
    (SELECT NEWID() AS [ID], nationality_1 
     FROM [info_t]) AS [t]

在此之后-如何更新现有的表(info_t)?

EN

回答 2

Stack Overflow用户

发布于 2021-12-02 09:46:37

你可以这样做

代码语言:javascript
复制
UPDATE R 
SET R.col1 = p.nationality_2,
    R.col2 = p.nationality_3,
    R.col3 = p.nationality_4 
FROM info_t AS R
INNER JOIN (

 SELECT id, nationality_1
,Reverse(ParseName(Replace(Reverse(nationality_1), '_', '.'), 1)) As [nationality_2]
,Reverse(ParseName(Replace(Reverse(nationality_1), '_', '.'), 2)) As [nationality_3]
,Reverse(ParseName(Replace(Reverse(nationality_1), '_', '.'), 3)) As [nationality_4]
FROM (Select newid() AS [ID], nationality_1 from [info_t]) As [t]

) AS P 
       ON R.pid = P.id 
-- WHERE R.id = '17190'; --you can set filters here
票数 0
EN

Stack Overflow用户

发布于 2021-12-02 10:03:39

请看我的例子。我的意思是,你可以将它与你的情况相匹配:

代码语言:javascript
复制
update info_t 
set country_1 = PARSENAME(REPLACE(nationality_1, '_', '.'), 1),
    country_2 = PARSENAME(REPLACE(nationality_1, '_', '.'), 2),
    country_3 = PARSENAME(REPLACE(nationality_1, '_', '.'), 3);

SQL Server update fiddle

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

https://stackoverflow.com/questions/70197040

复制
相关文章

相似问题

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