SQL Server varchar.to Array() 或 string.toArray() 方法

标签 sql sql-server tsql

我想将字符串数据转换为 SQL Server 中的数组。 我尝试了如下。

SELECT '223456789' AS SerialOriginalCode
-- SerialOriginalCode 223456789
DECLARE @tbl_SerialOriginalVerion TABLE(ID INT, SerialOriginalCode INT);
INSERT INTO @tbl_SerialOriginalVerion VALUES
(1, 2),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9);
SELECT * FROM @tbl_SerialOriginalVerion

但这是手动方式,它不是编程转换的方式,因为它需要我为每行键入每个插入值。

有人可以建议我更优雅的方式吗?

最佳答案

DECLARE @InputText AS VARCHAR(MAX) = '223456789'
DECLARE @Pos Int = 1
DECLARE @End Int
DECLARE @TextLength Int = DATALENGTH(@InputText)

DECLARE @Array TABLE 
(
  TokenID Int PRIMARY KEY IDENTITY(1,1),
  Match Varchar(MAX)
)

-- Exit function if no text is passed in.
IF @TextLength <> 0 
  BEGIN
    WHILE @Pos <= @TextLength BEGIN
      INSERT @Array (Match) VALUES (SUBSTRING(@InputText,@Pos,1))
      SET @Pos = @Pos + 1
    END
  END

SELECT * FROM @Array

关于SQL Server varchar.to Array() 或 string.toArray() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29740939/

相关文章:

java - 字符变化列的自定义转换器 - from 方法中的参数为 null

sql-server - 如何在 SQL Server 2005 中连接单引号中的字符串?

sql - 大日期范围内的最小/最大日期值取决于值

sql - 在 SQL Server 中计算运行总计

sql - 在具有来自另一个表的附加数据集的行中搜索重复项

sql - 对不在 GROUP BY 中的字段使用 IF 语句

java - 无法重新打开表。 select查询中使用了两次临时表

c# - 如何使用 Entity Framework Core 在 LINQ 更新语句中使用 CURRENT_TIMESTAMP?

mysql - 如何循环mysql程序?

sql - 有效地随机化(洗牌)Sql Server 表中的数据