使用SQL,如何从CHAR(30)字段的右端检索2个单词?
namefield =“我叫比尔史密斯”
结果=比尔史密斯
答案 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。
我已经包含了上面的测试代码 - 您可以通过删除该行的注释来查看我如何测试各个部分。这种技术在我的测试中证明是有用的。