我们如何在 SQL 中显示单引号的 ASCII 码?
How we can display ASCII code for single quote in SQL?
我得到了答案,但是有人可以解释一下我们如何以及为什么需要使用额外的单引号吗????
Select ASCII ('''') from dual;
因为你必须逃避它。
- 字符串文字以单引号开头
- 另一个终止字符串...
- ...除非它紧跟另一个“转义”它的单引号
例如:这是你拥有的:
SQL> Select ASCII ('''') from dual;
ASCII('''')
-----------
39
如果省略其中一个单引号,您将得到一个无效字符串:
SQL> Select ASCII (''') from dual;
ERROR:
ORA-01756: quoted string not properly terminated
只有两个单引号?没关系,但是 - 它是一个空字符串,不是您想要的(单引号):
SQL> Select ASCII ('') from dual;
ASCII('')
----------
或者,您可以像这样使用 q 引用机制,而不是那么多单引号:
SQL> select ascii(q'[']') from dual;
ASCII(Q'[']')
-------------
39
SQL>
基本上,您会将字符串(包含单引号)括在方括号中。这个例子(只有一个单引号)看起来 愚蠢 ,但是 - 看看这个:
SQL> select 'L''Oreal' example1,
2 q'[L'Oreal]' example2 --> this
3 from dual;
EXAMPLE EXAMPLE
------- -------
L'Oreal L'Oreal
看到了吗?在括号内,您“通常”使用单引号,而不转义它们。在更复杂的情况下,该机制确实非常有用。
我得到了答案,但是有人可以解释一下我们如何以及为什么需要使用额外的单引号吗????
Select ASCII ('''') from dual;
因为你必须逃避它。
- 字符串文字以单引号开头
- 另一个终止字符串...
- ...除非它紧跟另一个“转义”它的单引号
例如:这是你拥有的:
SQL> Select ASCII ('''') from dual;
ASCII('''')
-----------
39
如果省略其中一个单引号,您将得到一个无效字符串:
SQL> Select ASCII (''') from dual;
ERROR:
ORA-01756: quoted string not properly terminated
只有两个单引号?没关系,但是 - 它是一个空字符串,不是您想要的(单引号):
SQL> Select ASCII ('') from dual;
ASCII('')
----------
或者,您可以像这样使用 q 引用机制,而不是那么多单引号:
SQL> select ascii(q'[']') from dual;
ASCII(Q'[']')
-------------
39
SQL>
基本上,您会将字符串(包含单引号)括在方括号中。这个例子(只有一个单引号)看起来 愚蠢 ,但是 - 看看这个:
SQL> select 'L''Oreal' example1,
2 q'[L'Oreal]' example2 --> this
3 from dual;
EXAMPLE EXAMPLE
------- -------
L'Oreal L'Oreal
看到了吗?在括号内,您“通常”使用单引号,而不转义它们。在更复杂的情况下,该机制确实非常有用。