如何在报价之间选择特定数据(“)

时间:2014-07-11 18:55:38

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

我正在重新发布我的问题,因为我是SQL 2012新手。

我想在以下行

中获取引号(")之间的数字数据

ROW1:' asdalknd,"的 1,2,3,4 ",slknsdl,"的 -5,6,7,8- ",snlsn'

ROW2:' asknd,"的 111,267,387,4756 ",snsdl,"的 534646767348 ",&snlssdsdsdsjkvkn #39;

ROW3' ...

ROW4' ...

ROW5' ...

ROW6' ...

ROW7' ...

ROW8' ...

上面提到的是单列的行。

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

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

由于

1 个答案:

答案 0 :(得分:0)

这是丑陋,但最终会有效:

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'
  • 找到“with instr(COLUMN,"""") - >返回24
  • 的第一次出现
  • 使用字符串的右端。因此,我们需要使用len(COLUMN) - >取字符串的长度。 55并减去第一个“(24)
  • 的位置
  • 然后我们需要在右侧字符串中找到第二个“instr()”,我们需要使用right(COLUMN,len(COLUMN)-instr(COLUMN,""""))再次创建,并在“。
  • 中减去1。