关于Oracle数据库 特殊字符处理的问题

灵雨飘零 2011-07-06 04:58:35
SQL语句中 如果字段中包含特殊字符如“&”等时,sql语句就无法正常执行,虽然知道用函数可以实现,但是想实现例如这样的sql语句怎么处理??

string sql="select A&B as A&B from Table";
...全文
533 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqlife 2011-07-07
  • 打赏
  • 举报
回复
特殊字符,为什么要使用呢,奇怪啊,想创新?
灵雨飘零 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xiaodejun5241 的回复:]
楼主按照2楼的步骤操作,明显可以实现。双引号确实可以转义特殊字符。不晓得楼主是如何操作的...
[/Quote]

在行转列操作中,某个值中含特殊字符。列值变为行值时不行。
小德 2011-07-07
  • 打赏
  • 举报
回复
楼主按照2楼的步骤操作,明显可以实现。双引号确实可以转义特殊字符。不晓得楼主是如何操作的...
灵雨飘零 2011-07-07
  • 打赏
  • 举报
回复
郁闷中、。、、、
灵雨飘零 2011-07-07
  • 打赏
  • 举报
回复
as A&B 怎么处理??双引号好像不行吧?
小德 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 kingboy2008 的回复:]
引用 12 楼 java3344520 的回复:
特殊字符,为什么要使用呢,奇怪啊,想创新?


是这样,有一个参数类型表,表中的类型是动态添加的。这个参数类型的名称中含有特殊字符(一些专业参数名称,不能用汉字)。填报报表的时候添加的时候需要添加这些类型的值(专业参数值),显示的时候需要把值行转列显示。
[/Quote]
像我14楼的例子跟你需求一样吧,已经可以将L&1作为行了。
灵雨飘零 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 java3344520 的回复:]
特殊字符,为什么要使用呢,奇怪啊,想创新?
[/Quote]

是这样,有一个参数类型表,表中的类型是动态添加的。这个参数类型的名称中含有特殊字符(一些专业参数名称,不能用汉字)。填报报表的时候添加的时候需要添加这些类型的值(专业参数值),显示的时候需要把值行转列显示。

小德 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 kingboy2008 的回复:]
引用 10 楼 xiaodejun5241 的回复:
楼主按照2楼的步骤操作,明显可以实现。双引号确实可以转义特殊字符。不晓得楼主是如何操作的...


在行转列操作中,某个值中含特殊字符。列值变为行值时不行。
[/Quote]

不晓得楼主的行列转换是这样不?

WITH a as (
SELECT '1' id ,'L&1' gd,'03-01-01' tm FROM dual UNION ALL
SELECT '1' id ,'L&2' gd,'03-01-02' tm FROM dual UNION ALL
SELECT '2' id ,'L&1' gd,'03-02-01' tm FROM dual UNION ALL
SELECT '2' id ,'L&2' gd,'03-02-02' tm FROM dual UNION ALL
SELECT '2' id ,'L&3' gd,'03-02-03' tm FROM dual UNION ALL
SELECT '3' id ,'L&2' gd,'03-03-02' tm FROM dual
)
select id,max(decode(gd,'L&1',tm)) "L&1",
max(decode(gd,'L&2',tm)) "L&2",
max(decode(gd,'L&3',tm)) "L&3"
from a
group by id;
xuemengqingccx 2011-07-07
  • 打赏
  • 举报
回复
列名定義的時候一定要標準化。
否則會給自己造成不必要的麻煩。
hanzs 2011-07-06
  • 打赏
  • 举报
回复
含有特殊字符的列名,可以使用双引号进行转义
yuyeyi 2011-07-06
  • 打赏
  • 举报
回复
貌似只能用"a&b"
小德 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tangren 的回复:]
在java中
string sql="select \"A&B\" as \"A&B\" from Table";

在sqlplus中
SQL> set define off;
SQL> create table ts1("A&B" varchar2(20));

Table created

SQL> select * from ts1;

……
[/Quote]
db的话可以使用双引号使得非法字符合法化。
布丁88 2011-07-06
  • 打赏
  • 举报
回复
create table ts1("A&B" varchar2(20));
这条语句的结果是,TS1表中只有A字段而不是A&B字段
布丁88 2011-07-06
  • 打赏
  • 举报
回复
大哥,在ORCLE中是不让你的表格中出现带有&的字段的.
tangren 2011-07-06
  • 打赏
  • 举报
回复
在java中
string sql="select \"A&B\" as \"A&B\" from Table";

在sqlplus中
SQL> set define off;
SQL> create table ts1("A&B" varchar2(20));

Table created

SQL> select * from ts1;

A&B
--------------------

SQL> insert into ts1 values ('abc');

1 row inserted

SQL> select "A&B" AS "A&B" from ts1;

A&B
--------------------
abc

SQL>
灵雨飘零 2011-07-06
  • 打赏
  • 举报
回复
自己占沙发!

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧