从SQL中的逗号分隔值中获取第一个或第二个值

Tan*_*moy 1 sql sql-server

我有一个存储数据的列(42,12).现在我想获取42或12(两个不同的选择查询).我搜索并发现了一些类似但更复杂的场景.这有什么简单的方法吗?我正在使用MSSQL Server 2005.

鉴于总会有两个值,它们将是整数

Ran*_*der 8

我会告诉你,你遇到这个问题的原因是因为数据库(你可能没有任何控制权)违反了第一个正常形式.除其他外,第一个普通形式表示每列应该包含单个值,而不是多个值.这是糟糕的设计.

现在,说到这里,第一个突然出现的解决方案是编写一个UDF,根据分隔符解析此列中的值,并返回第一个或第二个值.

兰迪


Adr*_*der 6

你可以尝试这样的事情

DECLARE @Table TABLE(
        Val VARCHAR(50)
)

INSERT INTO @Table (Val) SELECT '42,12'

SELECT  *,
        CAST(LEFT(Val,CHARINDEX(',',Val)-1) AS INT) FirstValue,
        CAST(RIGHT(Val,LEN(Val) - CHARINDEX(',',Val)) AS INT) SecondValue
FROM    @Table
Run Code Online (Sandbox Code Playgroud)