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

时间:2009-12-23 12:23:17

标签: sql sql-server

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

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

2 个答案:

答案 0 :(得分:8)

我将在此通过告诉您出现此问题的原因是因为数据库(您可能无法控制)违反了第一个普通表格。除其他外,第一个普通形式表示每列应该包含单个值,而不是多个值。这是糟糕的设计。

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

兰迪

答案 1 :(得分: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