【问题标题】:List a comma-separated name without the comma列出不带逗号的逗号分隔名称
【发布时间】:2014-04-01 20:54:57
【问题描述】:

在 SQL+ 中,我应该创建一个包含一列的表:名称。在那一栏中只有一个名字,'Doe,John'。我应该编写一个选择语句来将数据显示为“John Doe”;我看过,但我似乎找不到任何方法来做到这一点。有什么想法吗?

【问题讨论】:

  • REPLACE() 是您需要的函数,但一列应该包含一段数据,连接数据总是比拆分数据更容易。考虑将列拆分为名字和姓氏
  • 您使用的是哪个 RDBMS?如果您需要重新排列数据(姓氏、名字到名字姓氏),不确定replace 将如何帮助您。我也附和其他人——这确实应该存储在两个单独的列中。
  • 如果数据在列中的格式/顺序不一致,那么即使是上帝也无法帮助他。单独的列可以解决所有问题。
  • 我知道有更简单的方法......但这是一项任务,我只需要处理一列。

标签: sql select


【解决方案1】:

虽然您应该将其存储在 2 个单独的列(名字和姓氏)中,但我们假设这不是一个选项。答案是特定于 RDBMS。

对于 MySql,substring_index 效果很好:

select substring_index(name,',',1) lastname,
   substring_index(name,',',-1) firstname
from yourtable

Some Fiddle

SQL Server,您有多种选择。这是一个使用substringcharindex 的:

select substring(name,1,charindex(',',name)-1) lastname,
   ltrim(substring(name,charindex(',',name)+1, len(name))) firstname
from yourtable

Some More Fiddle

【讨论】:

    【解决方案2】:
    SELECT REPLACE(name,',',' ');
    

    其中 name 是包含数据 Doe,John 的字段名称。 所以你用空格字符替换逗号

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      相关资源
      最近更新 更多