我有一个变量'x',它是staging表中的varchar,但它在目标表中被设置为布尔值,它具有'true'和'false'值。如何将varchar转换为postgresql中的布尔值?如何将varchar转换为布尔值
回答
如果varchar列包含one of the strings(不区分大小写):
t
,true
,y
,yes
,on
,1
f
,false
,n
,no
,off
,0
,你可以简单地将它转换为布尔值,例如:
select 'true'::boolean, 'false'::boolean;
bool | bool
------+------
t | f
(1 row)
请参阅SQLFiddle。
这不是真的,请参阅'select'true':: varchar :: boolean,'false':: varchar :: boolean;' –
它有什么问题? [SQLFiddle](http://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/17922) – klin
嗯,有趣。我会发誓我在新的PostgreSQL中也看到了一个错误,但似乎这只是Redshift和旧PostgreSQL版本中的一个问题。 –
对于老版本的PostgreSQL和红移铸造不会工作,但下列情况:
SELECT boolin(textout('true'::varchar)), boolin(textout('false'::varchar));
见SQLFiddle也看到在PostgreSQL list的讨论。
红移,我有以下的好运:
SELECT DECODE(column_name,
'false', '0',
'true', '1'
)::integer::boolean from table_name;
这只是映射为varchar字符串'0'
或'1'
其红移可以再投第一个整数,然后终于到布尔值。
这种方法的一个很大的优点是它可以扩展到包含任何你想要映射的附加字符串。即:
SELECT DECODE(column_name,
'false', '0',
'no', '0',
'true', '1',
'yes', '1'
)::integer::boolean from table_name;
你可以阅读更多关于解码方法here。
- 1. 如何将char转换为布尔值?
- 2. 将Varchar值转换为散列值:varchar
- 3. 将数值转换为Varchar
- 4. 将返回的布尔值转换为布尔值
- 5. 帮助将Hex转换为布尔值?
- 6. 将字符串转换为布尔值
- 7. 将对象转换为布尔值[] []
- 8. 布尔:如何将NAND4转换为NAND2
- 9. 将布尔转换为Varchar2
- 10. 如何将正确的表达式写入布尔值? (无法从布尔值转换为布尔值)
- 11. 如何将布尔转换可空布尔(布尔?)
- 12. 将mysql LONGTEXT值转换为VARCHAR值?
- 13. 如何在ActionScript中将字符串转换为布尔值?
- 14. 如何将布尔值转换为是或否在Extjs Combobox
- 15. 如何将char转换为Java中的布尔值?
- 16. 如何将这些字符串转换为布尔值?
- 17. 如何将字符串转换为布尔值?
- 18. Visual Basic 6如何将整数转换为布尔值?
- 19. Oracle。将varchar值“40.00”转换为数字
- 20. T-SQL:将varchar转换为数值
- 21. DB2:将日期值转换为varchar
- 22. 错误:在将varchar值'10.8'转换为
- 23. 如何将“mm/yyyy”varchar转换为datetime?
- 24. 如何将varchar转换为datetime?
- 25. 如何将byte []转换为varchar?
- 26. MYSQL如何将varchar转换为bigint
- 27. 如何将varchar(10)转换为TIMESTAMP?
- 28. 如何将varchar转换为datetime
- 29. 如何将Int转换为Varchar
- 30. 如何将varchar转换为负数?
是否要插入,选择更新?或者是什么? –
我想更新 – Ramesh