2017-07-26 25 views
1

我需要在列中選擇一個值範圍(例如:「1」,「2」,「2A」,「3」,...),但這些是字符因此我必須將它們轉換爲int以便獲得適當的「BETWEEN」評估。將字符轉換爲int以便正確查詢

這是我嘗試過,但似乎忽略了演員陣容,唯一的返回值對應numins = 1001:

SELECT sum(totalchiefs) AS totalchiefs 
    , sum(totalnochiefs) AS totalnochiefs 
    , sum(totalchildrens) AS totalchildrens 
    , sum(totalpeople) AS totalpeople 
FROM nombrehabs 
WHERE numins = 1001 AND ((numpol~E'^\\d+$')::integer BETWEEN 1 AND 27); 
+0

文檔'〜'針對正則表達式的值相匹配。因此,該運算符的結果是「true」或「false」 - 將其轉換爲整數將返回「0」或1 –

回答

0

您可以使用substring函數提取從你的字符串的數量。

SELECT 
    SUM(totalchiefs) AS totalchiefs, 
    SUM (totalnochiefs) AS totalnochiefs, 
    SUM (totalchildrens) AS totalchildrens, 
    SUM (totalpeople) AS totalpeople 
FROM 
    nombrehabs 
WHERE 
    numins = 1001 
    AND (SUBSTRING(numpol FROM '\d+') :: INTEGER BETWEEN 1 AND 27) 
); 

結帳在9.7. Pattern Matching

+0

按預期工作,非常感謝! – Kzone