如何运行包含(')的查询?
例如:
select * from A where B like 'aa'bb'
Run Code Online (Sandbox Code Playgroud)
使用Oracle 10g
提前致谢
我喜欢将它作为单个查询来做,但我认为它需要一个游标.如果我不能将它作为单个查询执行,我想将结果输出为SYS_REFCURSOR.一个简化的例子:
ID NAME Part Number SKU
------------------------------------
1 Widgetizer 150 1001
2 Widgetizer200 200 1002
3 WidgetizerDlx 250 1003
Run Code Online (Sandbox Code Playgroud)
P_ID NAME VALUE
----------------------------
1 WEIGHT 5
1 HEIGHT 10
1 VERSION 1
1 COLOR RED
2 WEIGHT 7
2 HEIGHT 10
2 VERSION 2
2 COLOR BLUE
Run Code Online (Sandbox Code Playgroud)
查询:
对于SKU小于1003的每种产品,请返回:
Product name, part #, SKU, WEIGHT, HEIGHT, COLOR
Run Code Online (Sandbox Code Playgroud) 请考虑此表:
firstName | lastName | hobby
-----------------------------
Mike | Stone | music
Sarah | James | cooking
Mike | Stone | jogging
Greg | Jones | reading
Sarah | James | music
Mike | Stone | painting
-----------------------------
Run Code Online (Sandbox Code Playgroud)
对于每个不同的firstName,lastName组合,如何选择单个爱好(无关紧要)?(在Oracle中)
所需结果的一个例子是:
firstName | lastName | hobby
-----------------------------
Mike | Stone | music
Sarah | James | cooking
Greg | Jones | reading
-----------------------------
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助..
山姆
我有一个gridview列,我需要以格式显示时间:3/2/2012 1:22 PM
但我的Db保存为3/2/2012 1:22:42 PM
我想删除此文本中的秒数.我可以使用(MM/DD/YYYY HH:MM:SS)将其删除,但如何从db列中包含AM/PM?
我们在SAP Netweaver中部署了一个Java Web应用程序,它通过普通JDBC访问Oracle 10g数据库.几天前,当一个查询导致以下错误时,该应用程序运行正常:
ORA-01843: not a valid month
Run Code Online (Sandbox Code Playgroud)
给我们带来麻烦的查询是这样的:
SELECT *
FROM (SELECT *
FROM (SELECT inspeccion.sociedad_id,
inspeccion_id,
estado_id,
(SELECT des_estado
FROM estado
WHERE estado.estado_id = inspeccion.estado_id)
des_estado,
(SELECT numero_secuencia
FROM estado
WHERE estado.estado_id = inspeccion.estado_id)
numero_secuencia,
planta_id,
(SELECT des_planta
FROM planta
WHERE planta.planta_id = inspeccion.planta_id)
des_planta,
area_id,
(SELECT des_area
FROM area
WHERE area.area_id = inspeccion.area_id) des_area
,
igp_id,
'-'
nom_lider,
nom_inspector,
nom_responsable,
To_char(fecha_inspeccion, 'DD/MM/YYYY')
fecha_inspeccion,
observacion,
recomendacion
FROM inspeccion) inspeccion) t_inspeccion
WHERE estado_id NOT IN ( 10 ) …Run Code Online (Sandbox Code Playgroud) 我需要从我的所有函数,过程,包,视图和表中提取代码(脚本),这样当我转到生产时,我可以运行脚本来创建所有对象.
在开发时我没有对所有数据库对象进行脚本备份.
提取代码或脚本的最佳方法是什么?任何建议或帮助都非常值得赞赏.
谢谢
我有一个很长的查询,跨多个表,我将四个值连接为所有者(名字,中间名和姓氏+组织).所有其他列都是相同的,但有多个所有者,因此,我想聚合多行.
我所看到的是(配对)
# Owner
1 Sam Smith, AAA
2 Stan Bird, BBB
2 Nancy Bird, BBB
3 Mike Owen, CCC
Run Code Online (Sandbox Code Playgroud)
我想看到的是
# Owner
1 Sam Smith, AAA
2 Stan Bird, Nancy Bird, BBB
3 Mike Owen, CCC
Run Code Online (Sandbox Code Playgroud)
注意事项:
我试过CASE(COLLECT...但这会杀死我的联系:
错误 - "无法从套接字读取更多数据"
SysAdmin,不知道为什么
我尝试过其他一些事情,没有运气.我当前的查询产生了所需的行数,但只是砍掉了第二个所有者.
我不确定在这里发布整个查询是否明智.请告诉我这是否有帮助.
更新2012-01-29
wm_concat之前我使用不正确,但是当我使用它时,我收到此错误:
ORA-06502: PL/SQL: numeric or value error: character string buffer too
small ORA-06512: at "WMSYS.WM_CONCAT_IMPL", line 30
06502. 00000 - "PL/SQL: numeric or value error%s"
*Cause:
*Action: …Run Code Online (Sandbox Code Playgroud) declare
tgl RENC_DITSEK.TGL_INPUT%TYPE;
thn varchar(10) := :new.tahun + 1;
BEGIN
SELECT TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS') INTO tgl FROM DUAL;
IF UPDATING ('TARGET_2') THEN
INSERT INTO NOTE_LOG VALUES(:NEW.PKP,'',:NEW.INDIKATOR,'Target Tahun ' ???? thn,'','','',tgl,'','0');
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
在上面的触发器体中,我需要加入thn''Target Tahun' 的值
如果使用php,只需添加点符号'Target Tahun '.thn,但我需要使用SQL执行此操作.
创建表:
create table customer (Name varchar2(10), Address varchar(40), Contact number);
Run Code Online (Sandbox Code Playgroud)
INSERT的创建过程:
CREATE OR REPLACE PROCEDURE SP_CUSTOMER (
p_name customer.Name%TYPE,
p_address customer.Address%TYPE,
p_contact customer.Contact%TYPE)
IS
BEGIN
INSERT INTO customer ("Name", "Address", "Contact")
VALUES (p_name, p_address, p_contact);
COMMIT;
END;
/
Run Code Online (Sandbox Code Playgroud)
错误:IT显示:警告:使用编译错误创建的过程.
CREATE PROCEDURE FOR SELECT:
CREATE OR REPLACE PROCEDURE SP_SELECT_CUSTOMER (
p_name customer.Name%TYPE,
p_address customer.Address%TYPE,
p_contact customer.Contact%TYPE)
IS
BEGIN
SELECT Name, Address, Contact FROM customer;
END;
/
Run Code Online (Sandbox Code Playgroud)
错误:IT显示:警告:使用编译错误创建的过程.
问题是什么.?怎么解决呢.
我想使用SQL脚本在列中的逗号后删除空格。我正在使用oracle DB。
我想从“名称”列中删除一个空格(在Sathish,kumar,raghavan之后),
同样,所有要修改的记录。我试过这个查询
update incitable SET name = LTRIM(RTRIM(name));
Run Code Online (Sandbox Code Playgroud)
但这并没有带来任何变化
请帮忙。
对不起,语法错误。