[英]Get first or second values from a comma separated value in SQL
我有一列存儲像(42,12)
這樣的數據。 現在我想獲取 42 或 12(兩個不同的選擇查詢)。 我搜索並發現了一些類似但更復雜的場景。 有什么簡單的方法嗎? 我正在使用 MSSQL Server 2005。
鑒於總是只有兩個值,它們將是整數
在這里,我將通過告訴您出現此問題的原因來幫助您,這是因為數據庫(您可能沒有任何控制權)違反了第一種常規形式。 除其他外,第一個范式表示每個列應包含一個值,而不是多個值。 這是糟糕的設計。
現在,這樣說,進入我腦海的第一個解決方案是編寫一個UDF,該UDF根據分度來分析此列中的值並返回第一個或第二個值。
蘭迪
您可以嘗試這樣的事情
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
你可以使用這樣的東西:
SELECT SUBSTRING_INDEX(field, ',', 1)
注意:這不是在 rdbms 中做事的有效方式。 考慮規范化您的數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.