【发布时间】:2014-03-15 07:03:46
【问题描述】:
这个问题我已经投入了太多时间。
我正在传递一个字符串
@OrderString varchar(255) = '1=1;|2=|3=|4=1;|5=|'
第一个数字是我要订购的商品,我将其保存在@ItemNum 中,= 之后的第二个数字是数量(将存储为 @ItemQuat)。数量可以是 1 到 1000 之间的任何值。如果订购的数量为零,则它只是项目编号和=。
问题是如何动态提取这些值?我只想要大于 0 的值。
我已经搞砸了好几个小时,我不确定我是否必须更新构建字符串的逻辑,或者是否可以使用 sql 中的字符串函数提取正确的值。
我目前拥有的示例:
--Obviously this won't work because it will always pull 1 regardless if the amount ordered is 0
set @ItemNum = substring(@OrderString, 1, charindex('=', @OrderString, 1)-1)
--This is currently wrong too because its pulling the quant for item 1
set @ItemQuat = substring(@OrderString, charindex('=',@OrderString,1)+1, charindex('|',@OrderString,1)-charindex('=',@OrderString,1)-1)
在拉取第一个值等之后,我正在循环并连接字符串。
任何帮助将不胜感激!
【问题讨论】:
-
这个字符串是从哪里来的?如果该数据在某个表中,那么您最好重新查询该表并获取原始的“未字符串化”数据,而不是稍后尝试拆分此字符串版本。
-
它是从xml传入的。在下订单之前,我正在检查订购的数量是否可用。所以我无法从表中拉出字符串:(
-
您使用的是 SQL Server 还是 MySQL?
-
SQL Server .....我需要更新那个标签
标签: sql sql-server string sql-server-2008 substring