当前位置:Gxlcms > 数据库问题 > SQL 表 和字符串 互转

SQL 表 和字符串 互转

时间:2021-07-01 10:21:17 帮助过:3人阅读

表转字符串 stuff((select top 20 ,+ cast(QQ as varchar(50)) from dl_QQ order by qq for xml path(‘‘)),1,1,‘‘)

 

  1. <span style="color: #008080;">--</span><span style="color: #008080;">字符串转表</span>
  2. <span style="color: #0000ff;">CREATE</span> <span style="color: #0000ff;">FUNCTION</span> Split(<span style="color: #008000;">@Text</span> <span style="color: #0000ff;">NVARCHAR</span>(<span style="color: #800000; font-weight: bold;">4000</span>),<span style="color: #008000;">@Sign</span> <span style="color: #0000ff;">NVARCHAR</span>(<span style="color: #800000; font-weight: bold;">4000</span><span style="color: #000000;">))
  3. </span><span style="color: #0000ff;">RETURNS</span> <span style="color: #008000;">@tempTable</span> <span style="color: #0000ff;">TABLE</span>(id <span style="color: #0000ff;">INT</span> <span style="color: #ff00ff;">IDENTITY</span>(<span style="color: #800000; font-weight: bold;">1</span>,<span style="color: #800000; font-weight: bold;">1</span>) <span style="color: #0000ff;">PRIMARY</span> <span style="color: #0000ff;">KEY</span>,<span style="color: #ff0000;">[</span><span style="color: #ff0000;">VALUE</span><span style="color: #ff0000;">]</span> <span style="color: #0000ff;">NVARCHAR</span>(<span style="color: #800000; font-weight: bold;">4000</span><span style="color: #000000;">))
  4. </span><span style="color: #0000ff;">AS</span>
  5. <span style="color: #0000ff;">BEGIN</span>
  6. <span style="color: #0000ff;">DECLARE</span> <span style="color: #008000;">@StartIndex</span> <span style="color: #0000ff;">INT</span> <span style="color: #008080;">--</span><span style="color: #008080;">开始查找的位置 </span>
  7. <span style="color: #0000ff;">DECLARE</span> <span style="color: #008000;">@FindIndex</span> <span style="color: #0000ff;">INT</span> <span style="color: #008080;">--</span><span style="color: #008080;">找到的位置 </span>
  8. <span style="color: #0000ff;">DECLARE</span> <span style="color: #008000;">@Content</span> <span style="color: #0000ff;">VARCHAR</span>(<span style="color: #800000; font-weight: bold;">4000</span>) <span style="color: #008080;">--</span><span style="color: #008080;">找到的值 </span>
  9. <span style="color: #008080;">--</span><span style="color: #008080;">初始化一些变量 </span>
  10. <span style="color: #0000ff;">SET</span> <span style="color: #008000;">@StartIndex</span> <span style="color: #808080;">=</span> <span style="color: #800000; font-weight: bold;">1</span> <span style="color: #008080;">--</span><span style="color: #008080;">T-SQL中字符串的查找位置是从1开始的 </span>
  11. <span style="color: #0000ff;">SET</span> <span style="color: #008000;">@FindIndex</span><span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">0</span>
  12. <span style="color: #008080;">--</span><span style="color: #008080;">开始循环查找字符串逗号 </span>
  13. <span style="color: #0000ff;">WHILE</span>(<span style="color: #008000;">@StartIndex</span> <span style="color: #808080;"><=</span> <span style="color: #ff00ff;">LEN</span>(<span style="color: #008000;">@Text</span><span style="color: #000000;">))
  14. </span><span style="color: #0000ff;">BEGIN</span>
  15. <span style="color: #008080;">--</span><span style="color: #008080;">查找字符串函数 CHARINDEX 第一个参数是要找的字符串 </span>
  16. <span style="color: #008080;">--</span><span style="color: #008080;"> 第二个参数是在哪里查找这个字符串 </span>
  17. <span style="color: #008080;">--</span><span style="color: #008080;"> 第三个参数是开始查找的位置 </span>
  18. <span style="color: #008080;">--</span><span style="color: #008080;">返回值是找到字符串的位置 </span>
  19. <span style="color: #0000ff;">SELECT</span> <span style="color: #008000;">@FindIndex</span> <span style="color: #808080;">=</span> <span style="color: #ff00ff;">CHARINDEX</span>(<span style="color: #008000;">@Sign</span>,<span style="color: #008000;">@Text</span>,<span style="color: #008000;">@StartIndex</span><span style="color: #000000;">)
  20. </span><span style="color: #008080;">--</span><span style="color: #008080;">判断有没找到 没找到返回0 </span>
  21. <span style="color: #0000ff;">IF</span>(<span style="color: #008000;">@FindIndex</span> <span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">0</span> <span style="color: #808080;">OR</span> <span style="color: #008000;">@FindIndex</span> <span style="color: #0000ff;">IS</span> <span style="color: #0000ff;">NULL</span><span style="color: #000000;">)
  22. </span><span style="color: #0000ff;">BEGIN</span>
  23. <span style="color: #008080;">--</span><span style="color: #008080;">如果没有找到者表示找完了 </span>
  24. <span style="color: #0000ff;">SET</span> <span style="color: #008000;">@FindIndex</span> <span style="color: #808080;">=</span> <span style="color: #ff00ff;">LEN</span>(<span style="color: #008000;">@Text</span>)<span style="color: #808080;">+</span><span style="color: #800000; font-weight: bold;">1</span>
  25. <span style="color: #0000ff;">END</span>
  26. <span style="color: #008080;">--</span><span style="color: #008080;">截取字符串函数 SUBSTRING 第一个参数是要截取的字符串 </span>
  27. <span style="color: #008080;">--</span><span style="color: #008080;"> 第二个参数是开始的位置 </span>
  28. <span style="color: #008080;">--</span><span style="color: #008080;"> 第三个参数是截取的长度 </span>
  29. <span style="color: #008080;">--</span><span style="color: #008080;">@FindIndex-@StartIndex 表示找的的位置-开始找的位置=要截取的长度 </span>
  30. <span style="color: #008080;">--</span><span style="color: #008080;">LTRIM 和 RTRIM 是去除字符串左边和右边的空格函数 </span>
  31. <span style="color: #0000ff;">SET</span> <span style="color: #008000;">@Content</span> <span style="color: #808080;">=</span> <span style="color: #ff00ff;">LTRIM</span>(<span style="color: #ff00ff;">RTRIM</span>(<span style="color: #ff00ff;">SUBSTRING</span>(<span style="color: #008000;">@Text</span>,<span style="color: #008000;">@StartIndex</span>,<span style="color: #008000;">@FindIndex</span><span style="color: #808080;">-</span><span style="color: #008000;">@StartIndex</span><span style="color: #000000;">)))
  32. </span><span style="color: #008080;">--</span><span style="color: #008080;">初始化下次查找的位置 </span>
  33. <span style="color: #0000ff;">SET</span> <span style="color: #008000;">@StartIndex</span> <span style="color: #808080;">=</span> <span style="color: #008000;">@FindIndex</span><span style="color: #808080;">+</span><span style="color: #800000; font-weight: bold;">1</span>
  34. <span style="color: #008080;">--</span><span style="color: #008080;">把找的的值插入到要返回的Table类型中 </span>
  35. <span style="color: #0000ff;">INSERT</span> <span style="color: #0000ff;">INTO</span> <span style="color: #008000;">@tempTable</span> (<span style="color: #ff0000;">[</span><span style="color: #ff0000;">VALUE</span><span style="color: #ff0000;">]</span>) <span style="color: #0000ff;">VALUES</span> (<span style="color: #008000;">@Content</span><span style="color: #000000;">)
  36. </span><span style="color: #0000ff;">END</span>
  37. <span style="color: #0000ff;">RETURN</span>
  38. <span style="color: #0000ff;">END</span>
  39. <span style="color: #0000ff;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> dbo.Split(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">a,b,c,d,e,f,g</span><span style="color: #ff0000;">‘</span>,<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">,</span><span style="color: #ff0000;">‘</span>)

 

SQL 表 和字符串 互转

标签:

人气教程排行