【问题标题】:Using SQL split使用 SQL 拆分
【发布时间】:2017-04-08 15:39:50
【问题描述】:

在我的一个表中,我以以下格式存储 GroupID:“2#3#5”,这意味着用户属于组 2、3 和 5。如何将查询修改为状态 g.GroupID IN ( 2,3,5) ?从哪里得到 2,3,5

SELECT GroupIDs FROM BW_Staff WHERE StaffCode = ''

// 输出:2#3#5

g.GroupID IN (2, 3, 5) 2、3、5个值需要来自这个查询,所以需要用哈希分割?

SELECT g.Name, u.StaffCode,  SUBSTRING(u.Perms, 47, 1) AS Staff_Perm_Grant,
       SUBSTRING(g.Perms, 47, 1) AS Group_Perm_Grant 
FROM BW_Groups g,
     BW_Staff u
WHERE g.GroupID IN (2, 3, 5) and u.StaffCode = 'KAA'  

感谢您的帮助

【问题讨论】:

  • 标记您正在使用的 dbms。 (那里有一些非 ANSI SQL...)
  • 没有加入条件?添加示例表数据和预期结果 - 以及格式化文本。
  • 这听起来是个很糟糕的设计。
  • 我会用 UID、UserId、GroupNumber 创建另一个表“Groups”,而不是连接字符串字段。

标签: c# sql select split substring


【解决方案1】:

尽管它可能是一个设计糟糕的数据库(您应该创建一个与“员工”表具有多对多关系的“组”表),因此您可以加入两者。

可以在 SQL Server 2016 中使用 string_split(<field>, <delimiter>) 拆分字符串。 How to split a comma-separated value to columns

在 MySQL 中你没有这样的运气,但可以创建一个函数来做同样的事情: How to split the name string in mysql?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多