经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
以连接字符截取字符串
来源:cnblogs  作者:Insus.NET  时间:2019/5/27 10:49:11  对本文有异议

一些字符串是由"-"连接字符连接。

想以这个连接字符"-"对字符串时行截取前后字符。

可以写一个自定义函数:

 

  1. SET ANSI_NULLS ON
  2. GO
  3. SET QUOTED_IDENTIFIER ON
  4. GO
  5.  
  6. -- =============================================
  7. -- Author: Insus.NET
  8. -- Create date: 2019-05-27
  9. -- Update date: 2019-05-27
  10. -- Description: 截取字符串
  11. -- =============================================
  12. CREATE FUNCTION [dbo].[svf_CutOutStringWithHyphen]
  13. (
  14. @string NVARCHAR(MAX)
  15. )
  16. RETURNS @Table TABLE([Front] NVARCHAR(MAX),[Back] NVARCHAR(MAX))
  17. AS
  18. BEGIN
  19. DECLARE @hyphen VARCHAR(1) = N'-'
  20. IF @string LIKE '%'+ @hyphen +'%'
  21. BEGIN
  22. DECLARE @hyphen_position INT = CHARINDEX(@hyphen, @string)
  23. INSERT INTO @Table ([Front],[Back])
  24. SELECT SUBSTRING(@string, 1, @hyphen_position - 1) AS _From,
  25. SUBSTRING(@string, @hyphen_position + 1, LEN(@string)- @hyphen_position) AS _To
  26. END
  27. ELSE
  28. INSERT INTO @Table ([Front],[Back]) VALUES(N'',N'')
  29. RETURN
  30. END
  31. GO
Source Code

 

例子:

下面有一临时表,存储一些字符:

 

  1. CREATE TABLE #T ([ID] INT, [Strings] NVARCHAR(40))
  2. INSERT INTO #T([ID],[Strings]) VALUES (1,'B-Q'),(2,'23-45'),(3,'H-P'),(4,'ADF'),(5,'ADSF-ASDF-ASDF'),(6,'-ADF-ADF-'),(7,'-SFDG-KLJ-QER-'),(8,'shg-'),(9,'-sdfgs')
  3. SELECT [ID],[Strings] FROM #T
Source Code


现使用上面的自定义函数对临时表中[String]字符进行分割。得到的结果如下:

 

  1. SELECT [ID],[Strings],[Front],[Back] FROM #T
  2. CROSS APPLY
  3. [dbo].[svf_CutOutStringWithHyphen]([Strings])
Source Code

 

原文链接:http://www.cnblogs.com/insus/p/10928734.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号