【问题标题】:what might be the query to fetch all the records seperated by comma in SQL?获取 SQL 中以逗号分隔的所有记录的查询可能是什么?
【发布时间】:2010-09-20 09:26:40
【问题描述】:

在 SQL 中,假设我有一个表employee 并且有一个作为Name 的列,其中包含FirstName,LastName 格式的所有名称。例如:纳耶姆,汗。我只想获取所有姓氏,即 Khan。

【问题讨论】:

  • 在得到我想要的东西之前我怎么能接受
  • 如果你没有得到你想要的,那么确定你真正需要什么以及为什么你得到的建议不能满足你的要求

标签: sql sql-server-2005


【解决方案1】:

ORACLE 或 MySQL 解决方案

select DISTINCT SUBSTR(name,INSTR(name,',')+1)
  from employee

编辑

对于 SQL Server,请尝试

select SUBSTRING(name,CHARINDEX(',',name)+1,999) 
  from employee 

假设名称总是包含一个 ,

【讨论】:

  • 它按原样输出。根据我的示例,o/p 仍然是 Nayeem,Khan。
  • 尝试反转 CHARINDEX 函数中的 ',' 和 name 参数,就像我在示例中所做的那样
【解决方案2】:

在甲骨文中,那将是

select substr(name, 1, instr(name. ',') - 1) as first_name,
       substr(name, instr(name. ',') + 1) as last_name
from TABLE_NAME

【讨论】:

  • 我还建议修剪每个 substr 结果,以防逗号前后有空格
  • 请提供 SQL server 2005 DB 的解决方案
  • 如果您想要 SQL Server 2005 DB,最好从一开始就告诉我们
【解决方案3】:

你没有提到数据库。你可以在 MySQL 中尝试类似的东西:

SELECT SUBSTRING(name,LOCATE(",",name)+1)
FROM TABLE_NAME

【讨论】:

  • 就像那样,但是“WHERE”在翻译中丢失了一个 E,变成了 WHRE
  • 我想他也想只提取姓氏,但要使用的功能取决于他的 DBMS
  • Khan 只是一个例子。这将给出所有以 ,khan 结尾的名字。我只想要列名中的姓氏
【解决方案4】:

这里有一个 postgreSQL 解决方案:

SELECT SUBSTRING(name from ',(.+)$') FROM table;


SELECT SUBSTRING('foo,bar' from ',(.+)$') ;
 substring
-----------
 bar
(1 row)

【讨论】:

  • 它的说法 - 关键字“from”附近的语法不正确。我正在使用 sql server 2005
  • 它是用于 postgreSQL 的,我不知道 SQL Server。但可能有一些类似的功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-26
相关资源
最近更新 更多