2
真的很難找到一個好的標題。SQL - 從'1'的位置查找二進制表示形式
這裏是一個問題:我有一個SELECT
查詢GROUP BY
一個字段,它返回三個值(1,2,3)。這些值代表二進制數中'1'的位置。 換句話說:
Query Output | Reult
0,1,2 | 7 (111)
1,2 | 6 (110)
3 | 1 (001)
- | 0 (000)
好吧,我知道這很容易。但是有兩個限制。首先,我想要一個不是函數/存儲過程的查詢。其次,結果應該是一個字符串(如'010')而不是數字。
我發現整數值的解決方案,而不是字符串(VARCHAR)
SELECT COALESCE(sum(power(2, field)), 0) AS test FROM (
SELECT field FROM myTable GROUP BY field) a
我使用SQL Server 2008中,以防萬一。
我也有這樣的解決方案,但是這個不能擴展到更大數量的輸出:
SELECT output =
CASE TEST
WHEN 0 THEN '000'
WHEN 1 THEN '001'
WHEN 2 THEN '010'
WHEN 3 THEN '011'
WHEN 4 THEN '100'
WHEN 5 THEN '101'
WHEN 6 THEN '110'
WHEN 7 THEN '111'
END
FROM(
select COALESCE(sum(power(2, 3 - field)), 0) as test from (
select field from myTable group by field) a) b
這是一個很好的替代對於我的多個案例而言,但仍在尋找更好的可擴展解決方案。 –