替换 sqlplus 命令中的 HTML 个实体
replace HTML Entities in sqlplus command
所以,我有一个自动生成的 sql 文件,我正在尝试 运行 使用 sqlplus 命令,但问题是......可能 HTML 实体(在本例中为 '),因此它不会向用户询问任何值,这是我所拥有的示例:
CREATE TABLE MY_TABLE (
TABLE_KEY CHAR(24) DEFAULT '' '' NOT NULL,
TABLE_FIELD CHAR(40) DEFAULT '' '' NOT NULL
)
我正在尝试 运行 使用以下命令:
sqlplus USER/PASSWORD @<path_to_sql_file>
有没有什么方法可以在不 sql 的情况下获得实际的撇号并要求我提供 "apos" 值?
非常感谢您对此的帮助!
您可以将 '&' 字符替换为 '||chr(38)||'
试试这个:
CREATE TABLE MY_TABLE (
TABLE_KEY CHAR(24) DEFAULT chr(38)||'apos; '||chr(38)||'apos;' NOT NULL,
TABLE_FIELD CHAR(40) DEFAULT chr(38)||'apos; '||chr(38)||'apos;' NOT NULL
)
您可以使用 CHR(38)
而不是 &
(正如 Ersin 已经提出的)或者您 运行
SET DEFINE OFF
在 SQL*Plus 脚本的顶部。您甚至可以定义 &
以外的其他字符用于前缀替换变量,请参阅文档 SET DEFINE
更新
如果您在脚本中写入 DEFAULT '' ''
,那么 Oracle 会将 ' '
作为默认值 - 您还期望什么? Oracle 数据库不是 HTML 浏览器。
如果你想有两个撇号然后写DEFAULT ''' '''
。为了在字符串中转义 '
,只需将其加倍即可。
如果您必须更新现有值,您可以像这样使用更新语句:
UPDATE MY_TABLE SET TABLE_KEY = DBMS_XMLGEN.CONVERT(TABLE_KEY, 1);
所以,我有一个自动生成的 sql 文件,我正在尝试 运行 使用 sqlplus 命令,但问题是......可能 HTML 实体(在本例中为 '),因此它不会向用户询问任何值,这是我所拥有的示例:
CREATE TABLE MY_TABLE (
TABLE_KEY CHAR(24) DEFAULT '' '' NOT NULL,
TABLE_FIELD CHAR(40) DEFAULT '' '' NOT NULL
)
我正在尝试 运行 使用以下命令:
sqlplus USER/PASSWORD @<path_to_sql_file>
有没有什么方法可以在不 sql 的情况下获得实际的撇号并要求我提供 "apos" 值?
非常感谢您对此的帮助!
您可以将 '&' 字符替换为 '||chr(38)||'
试试这个:
CREATE TABLE MY_TABLE (
TABLE_KEY CHAR(24) DEFAULT chr(38)||'apos; '||chr(38)||'apos;' NOT NULL,
TABLE_FIELD CHAR(40) DEFAULT chr(38)||'apos; '||chr(38)||'apos;' NOT NULL
)
您可以使用 CHR(38)
而不是 &
(正如 Ersin 已经提出的)或者您 运行
SET DEFINE OFF
在 SQL*Plus 脚本的顶部。您甚至可以定义 &
以外的其他字符用于前缀替换变量,请参阅文档 SET DEFINE
更新
如果您在脚本中写入 DEFAULT '' ''
,那么 Oracle 会将 ' '
作为默认值 - 您还期望什么? Oracle 数据库不是 HTML 浏览器。
如果你想有两个撇号然后写DEFAULT ''' '''
。为了在字符串中转义 '
,只需将其加倍即可。
如果您必须更新现有值,您可以像这样使用更新语句:
UPDATE MY_TABLE SET TABLE_KEY = DBMS_XMLGEN.CONVERT(TABLE_KEY, 1);