这周我一直在寻找很多东西,但我还没有找到解决办法。谢谢你提前帮忙!
我试图通过在Windows中将SQL查询作为批处理文件运行在sqlplus上,从而实现SQL查询的自动化。我只限于这个工具,因为我工作的公司不支持sql。总的说来,sqlplus工作得很好--它在查询中读取并给出输出,除非它明显跳过带有中文字母的部分。
在中,整个查询工作正常。
其目的是返回位于高速公路上的元素数,因此语句的一部分是在addr_street字段中搜索公路/高速公路/.:
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函数-- several中的查询没有返回错误,但是在几次不同输入的尝试中没有返回任何附加结果。
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('\0631\06CC\062D\0627\00B7\00AF') ,所以我的问题很简单:
我怎么重写?
OR addr_street Like '%公路%'不使用中文符号而得到同样的结果?您会使用比sqlplus更多的工具/方法吗?
发布于 2019-11-29 14:48:42
Unistr似乎在这里工作,让我们首先使用asciistr:
select asciistr(n'公路') from dual --> result: \516C\8DEF并在查询中使用这些值:
with t(addr_street) as (select 'x公路q' from dual)
select * from t where addr_street like '%' || unistr('\516C\8DEF') || '%'发现了一排。
发布于 2019-11-29 14:28:43
使用单引号而不是双引号来创建文本文本,对于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 |
|-------|
| 玄真 |https://stackoverflow.com/questions/59106476
复制相似问题