簡體   English   中英

從 SQL 中的逗號分隔值獲取第一個或第二個值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM