我有这个使用正则表达式的简单查询。我不知道为什么每次尝试运行它都会返回错误。
select *
from mytable
where thumbnail_url regexp '^\?.+'
基本上,我想查看此列表中的任何字符串是否以问号开头。 我通过MySQLWorkbench 6.3连接到Amazon RDS。
答案 0 :(得分:4)
当您使用反斜杠来转义MySQL中的正则表达式字符时,您还必须将反斜杠本身转义为\
。 MySQL会看到一个?
字符,并尝试将其用作SQL语句本身的转义字符,而不是将其视为文字。但是你需要它作为文字才能修改正则表达式中的\
。
第一个\
会转义第二个\?
,从而产生一个文字正则表达式序列?
来表示匹配字符串中的单个文字select *
from mytable
where thumbnail_url regexp '^\\?.+'
。
MySQL documentation on string literals ...
使用转义反斜杠格式化表达式:
function whois (name, domains = '*') {
if ( typeof domains == 'Object' && domains.length > 0 ) {
var TLD = domains;
} else {
var TLD = ['.com','.net','.org','.edu','.gov', '.biz', '.info', '.mobi', '.me', '.tv', '.info', '.io'];
}
var available = [];
Promise.resolve(
Promise.map(TLD, function(domain) {
return dns.resolve4(name + domain, (err, addresses) => {
if (!addresses || addresses.length <= 0 ){
console.log(name + domain);
available.push(name + domain);
}
});
})
).then(()=>{
console.log(available);
return available;
});
}