Sql Server中复杂的字符串数据提取

请教各位,在sql server2012R2中,我有一串字符串
“HZ23070600066#机打#3.2232 G#WR37050054#B02360290V7092K#403#100000#2023-6-11 0:00:00#230626056C1#13255#126#86#10836 PCS#“
需要依次提取,各个#到#之间的数据,可提取为文本,例如第一个#到第二个#中间的数据为”机打“,第二个#到第三个#之间的数据为”3.2232 G“,每次提取一次对应一个sql 语句,请问有没有简单高效的方式能实现以上需求,感激不尽

【以下回答由 GPT 生成】

对于这个需求,可以使用SQL Server中的字符串处理函数来解决。以下是一种解决方案:

  1. 首先,创建一个存储过程来处理提取字符串的过程。

```sql CREATE PROCEDURE ExtractDataFromComplexString (@inputString VARCHAR(MAX)) AS BEGIN DECLARE @startPos INT, @endPos INT, @data VARCHAR(MAX)

 WHILE CHARINDEX('#', @inputString) > 0
 BEGIN
   SET @startPos = CHARINDEX('#', @inputString) + 1
   SET @endPos = CHARINDEX('#', @inputString, @startPos)
   SET @data = SUBSTRING(@inputString, @startPos, @endPos - @startPos)

   -- 在这里执行你自己的逻辑你可以将提取出的数据插入到另一个表中或进行其他操作
   -- 例如你可以使用 INSERT INTO  UPDATE 语句将数据插入到另一个表中
   -- 例如
   -- INSERT INTO YourTargetTable (yourColumn) VALUES (@data)

   SET @inputString = STUFF(@inputString, @startPos, @endPos - @startPos + 1, '')
 END

END ```

  1. 然后,执行存储过程,并传入包含复杂字符串的参数。

sql EXEC ExtractDataFromComplexString 'HZ23070600066#机打#3.2232 G#WR37050054#B02360290V7092K#403#100000#2023-6-11 0:00:00#230626056C1#13255#126#86#10836 PCS#'

这将逐个提取每个 "#" 和 "#" 之间的数据,并执行你在存储过程中定义的操作。

请注意,以上解决方案是一种基本的示例,您可能需要根据你的实际情况对其进行修改。希望对你有所帮助!如果还有其他问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^