SQL 在声明中使用中文字母
SQL Using Chinese Letters in Statement
这周我一直在搜索,但我还没有找到解决方案。提前感谢您的帮助!
我正在尝试通过 运行 将 SQL 查询作为批处理文件通过 sqlplus Windows cmd 自动执行。我对这个工具非常有限,因为我工作的公司不支持 sql cl。总的来说 sqlplus 工作正常 - 它读取查询并给出输出,除了它显然跳过了带有中文字母的部分。
在 SQL 开发人员中,整个查询有效。
目的是return位于高速公路的元素数量,所以语句的一部分是在addr_street字段中搜索highway/autobahn/.. .:
AND ((addr_street Like '%Autobahn%'
OR addr_street Like '%Autovia%'
OR addr_street Like '%Autopista%'
OR addr_street Like '%Interstate%'
OR addr_street Like '%Highway%'
OR addr_street Like '%Autostrada%'
OR addr_street Like '%公路%'
.....
如何将中文字母部分改写为ASCII码,使cmd上的sqlplus能够读取文件?
我尝试使用 unistr 函数 - SQL 开发人员中的查询没有 return 错误,但在使用不同输入的几次尝试中没有 return 任何其他结果。
AND ((addr_street Like '%Autobahn%'
OR addr_street Like '%Autovia%'
OR addr_street Like '%Autopista%'
OR addr_street Like '%Interstate%'
OR addr_street Like '%Highway%'
OR addr_street Like '%Autostrada%'
OR addr_street Like unistr('31CC2D27[=12=]B7[=12=]AF')
所以我的问题很简单:
如何重写
OR addr_street Like '%公路%'
不使用中文符号得到相同的结果?您会使用另一个 tool/approach 而不是 sqlplus 吗?
使用单引号而不是双引号来创建文本文字,对于 NVARCHAR2/NCHAR
文本文字,您需要在其前面加上 N
CREATE TABLE table_name ( value NVARCHAR2(20) );
INSERT INTO table_name VALUES (N'玄真');
查询
SELECT * FROM table_name
select asciistr(N'玄真') from table_name --this is optional if you already insert value with 'N'
结果
| VALUE |
|-------|
| 玄真 |
Unistr 似乎在这里工作,让我们首先使用 asciistr
:
select asciistr(n'公路') from dual --> result: 6CDEF
并在查询中使用这些值:
with t(addr_street) as (select 'x公路q' from dual)
select * from t where addr_street like '%' || unistr('6CDEF') || '%'
找到行。
这周我一直在搜索,但我还没有找到解决方案。提前感谢您的帮助!
我正在尝试通过 运行 将 SQL 查询作为批处理文件通过 sqlplus Windows cmd 自动执行。我对这个工具非常有限,因为我工作的公司不支持 sql cl。总的来说 sqlplus 工作正常 - 它读取查询并给出输出,除了它显然跳过了带有中文字母的部分。
在 SQL 开发人员中,整个查询有效。
目的是return位于高速公路的元素数量,所以语句的一部分是在addr_street字段中搜索highway/autobahn/.. .:
AND ((addr_street Like '%Autobahn%'
OR addr_street Like '%Autovia%'
OR addr_street Like '%Autopista%'
OR addr_street Like '%Interstate%'
OR addr_street Like '%Highway%'
OR addr_street Like '%Autostrada%'
OR addr_street Like '%公路%'
.....
如何将中文字母部分改写为ASCII码,使cmd上的sqlplus能够读取文件?
我尝试使用 unistr 函数 - SQL 开发人员中的查询没有 return 错误,但在使用不同输入的几次尝试中没有 return 任何其他结果。
AND ((addr_street Like '%Autobahn%'
OR addr_street Like '%Autovia%'
OR addr_street Like '%Autopista%'
OR addr_street Like '%Interstate%'
OR addr_street Like '%Highway%'
OR addr_street Like '%Autostrada%'
OR addr_street Like unistr('31CC2D27[=12=]B7[=12=]AF')
所以我的问题很简单:
如何重写
OR addr_street Like '%公路%'
不使用中文符号得到相同的结果?您会使用另一个 tool/approach 而不是 sqlplus 吗?
使用单引号而不是双引号来创建文本文字,对于 NVARCHAR2/NCHAR
文本文字,您需要在其前面加上 N
CREATE TABLE table_name ( value NVARCHAR2(20) );
INSERT INTO table_name VALUES (N'玄真');
查询
SELECT * FROM table_name
select asciistr(N'玄真') from table_name --this is optional if you already insert value with 'N'
结果
| VALUE |
|-------|
| 玄真 |
Unistr 似乎在这里工作,让我们首先使用 asciistr
:
select asciistr(n'公路') from dual --> result: 6CDEF
并在查询中使用这些值:
with t(addr_street) as (select 'x公路q' from dual)
select * from t where addr_street like '%' || unistr('6CDEF') || '%'
找到行。