【问题标题】:How to select specific data between Quotes (")如何在引号 (") 之间选择特定数据
【发布时间】:2014-07-11 18:55:38
【问题描述】:

由于我是 SQL 2012 的新手,所以我重新发布我的问题。

我想获取以下行中引号 (") 之间的数字数据,

row1:'asdalknd,"1,2,3,4",slknsdl,"5,6,7,8",snlsn'

row2:'asknd,"111,267,387,4756",snsdl,"534,646,767,348",snlssdsdsdsjkvkn'

row3'....

row4'....

第 5 行'....

第 6 行...

第 7 行...

第 8 行'....

以上是单列的行数。

我只想提取数字(每行可能在另一列中)

任何人都可以帮忙,因为这超出了我对 t-sql 的基本知识。

谢谢

【问题讨论】:

  • 您使用的是哪个 RDBMS?
  • “不知何故我尝试了 Substring 函数”意味着您应该至少尝试一次自己这样做。你能edit你的问题包括它吗?同时为您正在使用的特定 DBMS 添加标签? (也不清楚您发布的是单行还是三行。如果您希望我们帮助您,您需要非常清楚和具体地说明您的要求。我们看不到您的屏幕或从我们坐的地方读懂你的想法。)
  • 对不起.. 这是一个 SQL 2012 查询
  • 对不起,Ken,我对这个博客有点陌生。
  • 没关系。您首先应该知道的是,这不是博客、论坛或讨论组。这是一个关于编程相关问题的特定问题的网站,重点是specific这个词。 :-) @Gordon 是正确的;您提供的任何示例数据中都有零分号 (;)。无,意思是“没有一个”。

标签: sql sql-server sql-server-2012


【解决方案1】:

这是丑陋的,但最终会奏效:

COLUMN = 'jksjdksls#$#$@@kskjfjf,"123,456,789" lsnslkdswfnslsjfls'

left( right(COLUMN,len(COLUMN)-instr(COLUMN,"""")), instr( right(COLUMN,len(COLUMN)-instr(COLUMN,"""")), """") -1 )

--> 123,456,789

这是完成的:

  • 我们使用这个字符串'jksjdksls#$#$@@kskjfjf,"123,456,789" lsnslkdswfnslsjfls'
  • instr(COLUMN,"""")找到第一次出现的“-->返回24
  • 取字符串的右端。所以我们需要用len(COLUMN)--> 55取字符串的长度,减去第一个"(24)的位置
  • 然后我们需要在正确的字符串中找到带有instr()的第二个“,我们需要使用right(COLUMN,len(COLUMN)-instr(COLUMN,""""))再次创建它,并为“减去1。

【讨论】:

    猜你喜欢
    • 2019-10-04
    • 2013-10-11
    • 2023-03-17
    • 1970-01-01
    • 2023-03-25
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    相关资源
    最近更新 更多