【问题标题】:Splitting data in SQL (separating a string of data)SQL中的数据拆分(分离一串数据)
【发布时间】:2017-03-06 16:02:31
【问题描述】:

我希望在 SQL 中拆分一些数据。我们目前在 SQL 中使用 databox 来存储数据。例如以下信息将存储在名为 {Script.Details01} 的数据框中。

{Script.Details01} = J Bloggs 先生和 M Bloggs 小姐

我们要做的是验证我们的数据,但是由于其他部门手动输入数据,我们需要提取这两个名称并将它们分成两个不同的数据框。例如{Script.Details02}{Script.Details03}.

由于我们需要验证的数据,我们尝试将它们设置为 cols。

"SELECT '{Script.Details01}' as Col1,
'{Script.Details01}' as Col2,
'{Script.Details01}' as Col3"

Col1 Part1 = Item('Col1') Entry(1,'')

我们是否可以拆分数据,让 J Bloggs 先生进入 details02,而 M Bloggs 小姐进入 03?我们可以存储输入的数据并将其提取到问题、消息中,或者根据答案要求它沿着特定的路线前进。

J 博客先生和 M 博客小姐 {Script.Details02}{Script.Details03}

附言我们不关心“和”,想要这之间的一切。 如果我让任何人感到困惑,请随时让我知道,我会尝试更清楚:)

【问题讨论】:

  • 您希望根据什么标准拆分数据?例如,如果是 Mr -> Col 2,如果是 Miss -> Col 3。
  • 老实说,我认为我们只需要先拆分数据。例如Mr J Bloggs = 进入 {Script.Details02} Miss K Bloggs = 进入 {Script.Details03} 这些将从视图中拉出并显示为例如J Bloggs 先生和 K Bloggs 小姐。所以我认为重要的是首先将其拆分而不是将其进一步拆分为列?

标签: sql validation split multiple-columns


【解决方案1】:

这是一个可能的解决方案。这不是最简洁、最简洁的编写方式,您需要对其进行一些修改以使用您的表名、预期的列名/数据框等,但它应该为您提供一个良好的起点。请记住,如果您的数据输入人员在输入姓名对的方式上不是 100% 一致,您就会遇到麻烦。您可能需要使用更复杂的技术来清理剩余的信息。

 SELECT
 LEFT({Script.Details01}, CHARINDEX(' and ', {Script.Details01})) AS FirstName,
 RIGHT({Script.Details01}, (CHARINDEX(' and ', {Script.Details01}) + 5)) AS SecondName
 FROM MyTable

有关 CharIndex 和左右函数的更多信息,请参阅这些文章:

https://docs.microsoft.com/en-us/sql/t-sql/functions/charindex-transact-sql

https://social.technet.microsoft.com/wiki/contents/articles/17948.t-sql-right-left-substring-and-charindex-functions.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 2021-04-16
    相关资源
    最近更新 更多