我有一个存储(42,12)
等数据的列。现在我想获取42或12(两个不同的选择查询)。我搜索并发现了一些类似但更复杂的场景。这有什么简单的方法吗?我正在使用MSSQL Server 2005。
鉴于总会有两个值,它们将是整数
答案 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