我有一个看起来像这样的字符串:
'1.25,5.34,6.9,8.6547,2.3'
Run Code Online (Sandbox Code Playgroud)
我想将每个逗号分隔值存储到像这样的变量中,但以编程方式在 T-SQL 中存储:
Declare @Var1 float
Set @Var1 = 1.25
...
@Var2 = 5.34
@Var3 = 6.9
Run Code Online (Sandbox Code Playgroud)
等等等等..
我该怎么做呢?
转换为 JSON
也许最简单的解决方案是将字符串转换为 JSON 数组并按位置访问项目:
declare @text varchar(200)='1.25,5.34,6.9,8.6547,2.3'
declare @json varchar(202)='[' + @text + ']'
declare @var1 numeric(18,5)= JSON_VALUE(@json,'$[0]')
declare @var2 numeric(18,5)= JSON_VALUE(@json,'$[1]')
select @var1,@var2
Run Code Online (Sandbox Code Playgroud)
存储在表变量中但丢失顺序
基于集合的解决方案是将项目存储在表变量中,但顺序可能会丢失,正如 Raymond Nijland 指出的那样:
declare @text varchar(200)='1.25,5.34,6.9,8.6547,2.3'
declare @values table (id int identity,val varchar(20))
insert into @values (val)
select trim(value) from STRING_SPLIT(@text,',') x
insert into SomeTable (value1)
select val
from @values where ID=1
Run Code Online (Sandbox Code Playgroud)
唯一可以施加的顺序是使用 ORDER BY 升序或降序,它假设输入的顺序无关紧要。不是很有帮助。
| 归档时间: |
|
| 查看次数: |
3449 次 |
| 最近记录: |