如何在不使用PostgreSQL中的Like的情况下使用单引号查找文本

时间:2015-11-05 15:50:01

标签: sql postgresql

我有一个带有列(名为MyColumn)的表,其中的元素包括' 1',' 2',' 3'等等。 我想从MyTable获取Mycolumn等于' 1' 我试过这个查询

select * from MyTable where MyColumn='1'   --- i've get 0 rows

我也试过

select * from MyTable where MyColumn='\'1\''; 

如何找到单引号的文本元素?

2 个答案:

答案 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