我有一个带有列(名为MyColumn)的表,其中的元素包括' 1',' 2',' 3'等等。 我想从MyTable获取Mycolumn等于' 1' 我试过这个查询
select * from MyTable where MyColumn='1' --- i've get 0 rows
我也试过
select * from MyTable where MyColumn='\'1\'';
如何找到单引号的文本元素?
答案 0 :(得分:2)
单引号(不是“括号”)通过在SQL中加倍来转义:
select *
from MyTable
where MyColumn='''1''';
手册中也有详细记载:
http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS
答案 1 :(得分:0)
除了你在这种情况下通常做的事情(doubling apostrophes / single quotes)之外,我想指出一个事实,即在PostgreSQL中你可以使用“美元转义”,以防你有更长的字符串,可能包含很多“特殊字符”。您的陈述将是:
select * from MyTable where MyColumn = $$'1'$$;
或者,如果您冒险在字符串中加倍:
select * from MyTable where MyColumn = $THISWILLNEVERAPPEAR$'1'$THISWILLNEVERAPPEAR$;
另见: http://www.postgresql.org/docs/current/interactive/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING