Select
如何將用括號括起來的數字作為負數返回
我有一張桌子
CREATE TABLE tab1 (col1 integer, col2 character varying(20));
Col2 包含數值,但負值對應於括號 not 和減號 (-)。這是將 col2 作為字元的唯一目的,以便我們可以用括號保存否定。
INSERT INTO tab1 VALUES (100, '12345.50'); INSERT INTO tab1 VALUES (101, '10000.50'); INSERT INTO tab1 VALUES (102, '10050.00'); INSERT INTO tab1 VALUES (103, '(10050.00)'); INSERT INTO tab1 VALUES (104, '(10000.50)');
現在,當我顯示時,我希望正數正常顯示,帶括號的值表示前導減號 (-)。
SELECT col1, col2 FROM tab1; 100 12345.50 101 10000.50 102 10050.00" 103 (10050.00) 104 (10000.50)
我需要呈現如下
100 12345.50 101 10000.50 102 10050.00 103 -10050.00 104 -10000.50
pgsql 是否有任何內置函式來處理這個問題?
謝謝你,問候,Shaamil。
我建議您定義
col2
asnumeric(15,2)
而不是 ascharacter varying
。使用適當的類型總是更好。轉換插入的值:
INSERT INTO tab1 VALUES (104, CAST(translate('(10000.50)', '()', '-') AS numeric(15,2)));
我不知道這種情況下的任何功能,
使用雙重替換
CREATE TABLE tab1 (col1 integer, col2 character varying(20));
INSERT INTO tab1 VALUES (100, '12345.50');
INSERT INTO tab1 VALUES (101, '10000.50');
INSERT INTO tab1 VALUES (102, '10050.00');
INSERT INTO tab1 VALUES (103, '(10050.00)');
1 行受影響
INSERT INTO tab1 VALUES (104, '(10000.50)');
1 行受影響
SELECT col1, REPLACE(REPLACE(col2,')',''),'(','-') FROM tab1;
COL1 | 替換(替換(COL2,')',''),'(','-') ---: | :------------------------------------ 100 | 12345.50 101 | 10000.50 102 | 10050.00 103 | -10050.00 104 | -10000.50
db<>在這裡擺弄