查看: 249|回复: 0

[SQLServer] 创建一个Scalar-valued Function函数来实现LastIndexOf

发表于 2017-12-7 08:00:01

昨天有帮助网友解决的个字符串截取的问题,《截取字符串中最后一个中文词语(MS SQL)》http://www.cnblogs.com/insus/p/7883606.html 虽然实现了,但始终觉得代码写得很复杂。
MS SQL Server中没有一个如同C#一样的函数LastIndexOf。没有,我们是可以创建一个Scalar-valued Function函数的。

  1. SET ANSI_NULLS ON
  2. GO
  3. SET QUOTED_IDENTIFIER ON
  4. GO
  5. CREATE FUNCTION [dbo].[svf_LastIndexOf]
  6. (
  7. @OriginalCharacterString NVARCHAR(MAX),
  8. @Delimiter CHAR(1)
  9. )
  10. RETURNS INT
  11. AS
  12. BEGIN
  13. RETURN LEN(@OriginalCharacterString) - CHARINDEX(@Delimiter, REVERSE(@OriginalCharacterString)) + 1
  14. END
复制代码
Source Code

函数写好,我们举个小例子来演示一下:

想截取最后一个词语,截取开始位置,从最后一个空格开始。



回复

使用道具 举报

关闭

站长推荐上一条 /1 下一条