考虑此查询(此处为演示)
(SELECT * FROM `titles` where title = "test\\")
UNION ALL
(SELECT * FROM `titles` where title LIKE 'test\\\\')
输出:
| ID | TITLE |
--------------
| 1 | test\ |
| 1 | test\ |
为什么 (=)* 不需要额外的 (\) ,而(例如)额外的 \** 则需要?很明显,MySQL对 (IKE \) 使用
(test \\) 转义了 (test \\), 然后使用 (test \\\\)进行了** 转义。 *
表信息:
CREATE TABLE IF NOT EXISTS `titles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
--
-- Dumping data for table `titles`
--
INSERT INTO `titles` (`id`, `title`) VALUES
(1, 'test\\');
\``LIKE
默认情况下用作转义字符。
从手册中获得LIKE
:
由于MySQL在字符串中使用C转义语法(例如,“ \ n”表示换行符),因此必须对LIKE字符串中使用的任何“ \”加倍。例如,要搜索“ \
n”,请将其指定为“ \\ n”。要搜索“ \”,请将其指定为“ \\\\”;这是因为 解析器 会 一次 删除反斜杠,而
在进行模式匹配时会再次 反斜杠,因此要匹配一个反斜杠。
您可以通过指定另一个转义符来更改此设置,如下所示:
SELECT * FROM `titles` where title LIKE 'test\\' ESCAPE '|'
问题内容: 我正在尝试将输出输出为\ a \ b \ c。上面的错误可能是因为我无法转义\字符。 问题答案: 您无需转义反斜杠(仅使用内部单引号):
问题内容: 这样做的原因是“逃脱了”我。 JSON转义为正斜杠,因此哈希序列化为而不是。 为什么? 问题答案: JSON不需要您执行此操作,而是允许您执行此操作。它还允许您将“ \ u0061”用于“ A”,但这不是必需的。在将JSON嵌入标记中时允许帮助,该标记不允许内部字符串出现,如Seb指出的那样。 Microsoft的一些ASP.NET Ajax / JSON API使用此漏洞来添加额外的
问题内容: 我需要使用JSON发送日期。日期字符串应如下所示: “ 2013/5/15” 而是按以下方式对其进行转义: “ 2013 \ / 5 \ / 15” 我知道这样做是为了允许在scripts标记内包含json字符串,因为此问题解释了: JSON:为什么要转义正斜杠? 但就我而言,我不需要它。实际上,服务器正在返回错误。服务器没有处理此问题,因此我无法修复该服务器,因此必须在移动客户端代码
问题内容: 我不明白为什么会这样。 JSON转义为正斜杠,因此hash序列化为而不是。 为什么? 问题答案: JSON不需要您执行此操作,而是允许您执行此操作。它还允许您将“\u0061”用于“A”,但这不是必需的。在将JSON嵌入标记中时允许帮助,该标记不允许内部字符串出现,如Seb指出的那样。 Microsoft的一些ASP.NET Ajax/JSONAPI使用此漏洞来添加额外的信息,例如da
问题内容: json.org指出,可以将正斜杠(也称为solidus,)转义: 但是,未转义的斜杠也有效: 这背后的原因是什么?它来自Javascript根吗?(即,这是基于浏览器的Javascript中的问题,请参见Douglas Crockford的评论 )还是其他原因? 问题答案: 看来,我的第一个想法是正确的。 在JavaScript中,JSON 几乎 是 有效的JavaScript。但是
我正在尝试转义字符串中的正斜杠,它可以在使用Java的路径中使用。 例如: 现在我想使用上面的字符串路径。同时,我必须确保将像在路径中一样出现。对不起,如果它是重复的,但我找不到任何满意的解决办法。我的目的是使用上面的字符串在ZooKeeper中创建节点。 示例: 如果我使用下面的字符串在Zokkeeper中创建节点,那么我应该将“test/world”作为一个单独的节点而不是单独的节点。Zook