我有一个我无法弄清楚的问题。
我的表格中有list template_name, 在每个模板中,它以_US,_EE(也称为国家/地区)结束。 我必须将该部分添加到Country的新列中。
示例数据:
Template_name Country
Party_package_US US or USA
PARTY_Package_GB GB or England
Random_temp_DE DE or Germany
新列的输出可以只是最后三个字符。
我不知道为了得到这个结果我必须做什么样的查询。
现在好了,我该怎么做才能将结果导入表中的新列?
UPDATE #silverpop_header
SET MARKET_AREA = a.template_name
FROM #silverpop_header pop
join dw.f_CRM a
ON pop.template_name = a.TEMPLATE_NAME
left join (
select
RIGHT(RTRIM(Template_name), 2) country
from dw.f_CRM )
它在Sybase上
答案 0 :(得分:2)
如果你只需要最后两个字符
SELECT
SUBSTRING(Template_name,-2) AS 'Country'
FROM TABLE;
编辑: 或者如评论中所述:
SELECT
RIGHT(Template_name,2) AS 'Country'
FROM TABLE;
答案 1 :(得分:0)
处理非2位国家/地区代码的另一种方法。
SELECT Template_name, SUBSTRING_INDEX(Template_name, '_', -1) Country
FROM tbl;
将其作为完整演示。让我发布完整的SQL和输出:
SQL:
-- Data prepraration
create table tbl(template_name varchar(200));
insert into tbl values
('Party_package_US'),
('PARTY_Package_GB'),
('Random_temp_DE');
SELECT * FROM tbl;
-- Needed query
SELECT Template_name, SUBSTRING_INDEX(Template_name, '_', -1) Country
FROM tbl;
输出:
mysql> SELECT * FROM tbl;
+------------------+
| template_name |
+------------------+
| Party_package_US |
| PARTY_Package_GB |
| Random_temp_DE |
+------------------+
3 rows in set (0.00 sec)
mysql>
mysql> -- Needed query
mysql> SELECT Template_name, SUBSTRING_INDEX(Template_name, '_', -1) Country
-> FROM tbl;
+------------------+---------+
| Template_name | Country |
+------------------+---------+
| Party_package_US | US |
| PARTY_Package_GB | GB |
| Random_temp_DE | DE |
+------------------+---------+
3 rows in set (0.00 sec)
mysql>
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.8-rc |
+-----------+
1 row in set (0.00 sec)