在char DB2字段中检索正确的两个单词

时间:2017-01-31 16:50:58

标签: sql db2

使用SQL,如何从CHAR(30)字段的右端检索2个单词?

namefield =“我叫比尔史密斯”

结果=比尔史密斯

2 个答案:

答案 0 :(得分:0)

这是未经测试的,但可能类似于:

SELECT REVERSE(SUBSTRING(REVERSE(namefield) , 0, CHARINDEX(' ', REVERSE(namefield), CHARINDEX(' ', REVERSE(namefield), 0)+1))) FROM TABLE

将表替换为您的表。让我知道它是否有效!

答案 1 :(得分:0)

如果您使用LOCATE_IN_STRING,您可以说-X向后搜索 - 作为操作。 to charindex只是期待。

select
--  locate_in_string(str,' ',-1),
--  substr(str,1,locate_in_string(str,' ',-1)-1),
--  length(str) - locate_in_string(str,' ',-1),
--  locate_in_string(str,' ',-7),
--  locate_in_string(str,' ',(-1* (length(str) - locate_in_string(str,' ',-1))) -2 ),
--  substr(str,1,11) || '<-',
--  substr(str,1,locate_in_string(str,' ',(-1* (length(str) - locate_in_string(str,' ',-1))) -2 )-1),
  substr(str,locate_in_string(str,' ',(-1* (length(str) - locate_in_string(str,' ',-1))) -2 ))
FROM (
  VALUES('My name is Bill Smith')
) AS T(str)

这里我从最后一个空格开始,搜索前一个空格,然后将其传递给substr。

https://www.ibm.com/support/knowledgecenter/en/SSEPGG_9.7.0/com.ibm.db2.luw.sql.ref.doc/doc/r0054098.html

  

我已经包含了上面的测试代码 - 您可以通过删除该行的注释来查看我如何测试各个部分。这种技术在我的测试中证明是有用的。