【问题标题】:Extracting 2-letter capital substrings from table column in sql从sql中的表列中提取2个字母的大写子字符串
【发布时间】:2018-04-19 22:01:38
【问题描述】:

我有一个关于用户的 SQL 表,其中特定帐户用国家代码(大写的 2 个字母单词)标记,而标记中的其他子字符串(全部用逗号分隔)要么是小写字母,要么是超过 2 个字母长。

在用户表中 例如:

id               User_tags
1                alu,US,ATD
2                GB,xx
3                ol,tuds,FR

用户 1,2 和 3 被标记到国家 US、GB 和 FR,我需要从 user_tags 列中提取它们。我知道需要正则表达式函数,但我无法让它们在 SQL 查询中工作。

【问题讨论】:

  • 永远不要将数据存储为逗号分隔的项目 - 这只会给您带来很多麻烦。
  • 您使用的是哪个 dbms? (答案可能是特定于产品的。)
  • 使用应用程序代码(PHP、Java 等)定位 2 个大写字母标签。 SQL,如果可能的话,是非常笨拙的。下次别这样隐藏了。

标签: mysql sql regex


【解决方案1】:

创建一个国家代码参考表并加入到使用下面。我没有打开 sqlserver,所以无法仔细检查语法,但它应该可以工作。

Select * 
From yourtable y left join refcountry r
On charindex (r.code+’,’,y.string+’,’)>0

请注意,对于大型数据集,这可能会很慢

如果不是 sqlserver 在你的 rdbms 中找到 charindex 的等价函数

【讨论】:

    猜你喜欢
    • 2021-04-14
    • 2021-09-12
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 2018-04-15
    相关资源
    最近更新 更多