當前位置:首頁 » 編程語言 » oraclesql轉義字元
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oraclesql轉義字元

發布時間: 2022-09-05 00:05:40

『壹』 oracle基礎(第二節)

進行篩選的基本運算符號:

--查詢月薪高於2000的員工的姓名和其月薪

--查詢員工SMITH的員工信息
--關鍵字,表名,列名:大小寫是不敏感(隨意寫)
--數據:大小寫是敏感(不能隨意寫)

--查詢不在20號部門工作的員工信息

--查詢在20號部門工作並且月薪高於2000的員工信息

--查詢職位是MANAGER或者月薪不低於3000的員工信息

--查詢在10號部門工作月薪低於2000並且職位不是CLERK的員工信息

--查詢在10號部門工作或(20號部門工作並且月薪不低於1500)的員工信息
--and的優先順序要高於or 如果兩者混合使用,需要注意優先順序的問題
--加括弧解決優先順序問題

--sql注入:利用了and的優先順序高於or完成無密碼進行登錄

--SQL片段:通過在密碼框中輸入下方的SQL片段,更改了原有SQL語句的邏輯 ' or lname = 'admin --or前的邏輯:賬號隨意,密碼為空 (登錄失敗) --or後的邏輯:用戶名是admin的賬號 (調取了admin的信息)

--1.查詢10號部門職位是MANAGER的員工信息

--2.查詢月薪低於2000或月薪高於3000的員工信息

--3.查詢員工編號是7902的員工的所有下屬的員工信息

--4.查詢職位是CLERK或SALESMAN,並且月薪不低於1000的員工信息

--5.查詢月收入不低於2500的員工信息

--6.查詢30號部門年收入低於10000的員工信息

--7.查詢員工SCOTT的月薪,獎金和月收入

--8.查詢在1982年之前入職的員工信息(選做)

--相當於 >= A and <= B
--查詢月薪在1000-2000區間的員工信息

--82年入職的員工

--like '特定字元'
-- 特定字元:由轉義字元和搜索文本組成
-- 轉義字元: %: 0-n個字元(任意長度的任意字元)
-- : 1個字元(1個長度的任意字元)
-- 比如 姓李 特定字元的寫法 '李%'
-- 第二個字元是哈 特定字元的寫法 '
哈%'

--查詢員工名字首字母是S的員工

--查詢名字中倒數第2個字元是T的員工

--查詢名字中包含字母T的員工

--查詢名字中包含兩個字母T的員工

--查詢有兩個連續的T

--查詢名字中有%字元的員工
--聲明標識字元

--相當於 = A or = B or = C...

--查詢在10號部門或20號部門工作的員工

--查詢在10號部門工作或月薪高於1200的員工

-- = null 無法篩選任何數據

-- is null 篩選null值

-- not between A and B 不在A與B區間內
-- not like '%A%' 名字裡面沒有A
-- not in(A,B,C) 不是A,B,C其中之一
-- is not null 不為null

--查詢月薪不在1000-2000區間內並且名字中不包含字母T的員工信息

--order by 列名 或 列別名 或 表達式 或 列序號
--ASC 升序 由小到大
--DESC 降序 由大到小
--不寫 默認是升序

--## 書寫順序:select...from...where...order by...
--## 執行順序:from...where...select...order by...

--查詢所有員工的信息,按照月薪的升序排序

--再按照月薪的降序排序

--利用表達式排序

--利用列別名進行排序

--利用列序號進行排序(第4列)

--排序的原則:
--1.數值按照數值的大小
--2.文本按照字典順序

--3.日期按照未來的大

--#####order by 可以修飾多個列
-- ## order by A, B 先A的升序排序,如果A相同,再按B的升序排序
-- ## order by A desc, B desc 先A的降序排序,如果A相同,再按B的降序排序

--查詢月薪高於1000的員工,按照部門的升序排序,再按照入職日期降序排序

--推薦在order by中使用列名或列別名

--1.查詢名字中包含字母T,並且月薪在1500-3000之間的員工姓名和月薪

--2.查詢公司的BOSS信息(mgr值為null的人)

--3.查詢員工姓名,月薪,獎金,年收入,按照年收入降序進行排序顯示

--4.查詢職位中包含MAN並且有獎金收入(不是null不是0)的員工信息

--5.查詢在在1981年期間入職的員工信息,並按照月薪降序排序

--6.查詢員工信息,並按照職位升序,部門升序進行排序顯示

--7.查詢不在10號或20號部門工作,月薪低於1500的員工信息

--8.查詢所有的職位名稱,去掉重復後按照名稱的升序排序顯示

--9.查詢員工SCOTT和ADAMS的員工信息

--10.查詢年收入高於45000的員工信息,並按照年收入降序排序顯示

『貳』 Oracle的 函數 或 存儲過程 中怎麼 轉義

額……比方說……像下面這個:create or replace function fun_get_bookinfo(key_words varchar2(10)) returns table(……)return table (select * from v_book_info where bookname like '/_%' key_words '/');like後面與字元串匹配,但是要用到傳進來的參數直接引號括起來不就不能傳參了么,是應該上面那樣寫么……

『叄』 oracle怎麼將字元串中的轉義符

在ORACLE中,單引號有兩個作用: 1:字元串是由單引號引用 2:轉義。 單引號的使用是就近配對,即就近原則。而在單引號充當轉義角色時相對不好理解1.從第二個單引號開始被視為轉義符,如果第二個單引號後面還有單引號(哪怕只有一個)。

『肆』 oracle 怎麼轉義

在欄位里查找'%',涉及到Oracle的轉義字元,現總結如下:
SQL> select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
A&B
已選擇9行。

其中包含特殊的字元分別為%,_,&,有可能包含這些字元的數據含有錯誤,或者需要查找包含這些字元的數據。

SQL> select * from test where test like 'sdd _%' escape ' ';
TEST
--------------------
sdd_kk
轉義字元為' ';
SQL> select * from test where test like 'sdd\_%' escape '\';
TEST
--------------------
sdd_kk
轉義字元為'\';

SQL> select * from test where test like 'sdd=_%' escape '=';
TEST
--------------------
sdd_kk
轉義字元為'=';
SQL> select * from test where test like 'sdd/_%' escape '/';
TEST
--------------------
sdd_kk
轉義字元為'/';
SQL> select * from test where test like 'sddd_%' escape 'd';
未選定行
轉義字元為d,沒有實現轉義功能;
SQL> select * from test where test like '%\_%' escape '\';
TEST
--------------------
sdd_kk
查找包含所有'_'的欄位。
同理:通過這種方法查找含有'%'的所有欄位:
SQL> select * from test where test like '%\%%' escape '\';
TEST
--------------------
dffa%asfs
1%2345
1%54321
2%54321
%%54321
但是'&'不能通過轉義字元查找:
SQL> select * from test where test like '%\&%' escape'\';
select * from test where test like '%\&%' escape'\'
*
第 1 行出現錯誤:
ORA-01424: 轉義符之後字元缺失或非法
可以通過另外的方式進行轉義:
SQL> select ascii('&') from al;
ASCII('&')
----------
38
SQL> select * from test where test like '%'||chr(38)||'%';
TEST
--------------------
A&B
'''的轉義:
SQL> select * from test where test like '%''%';
TEST
--------------------
d'd
特殊符號的數據的插入
SQL> insert into test values('test&test');
輸入 test 的值: test
原值 1: insert into test values('test&test')
新值 1: insert into test values('testtest') -雖然插入,但是數據不對。
已創建 1 行。
SQL> show define
define "&" (hex 26)
SQL> set define off
SQL> show define
define OFF
SQL> insert into test values('test&test');
已創建 1 行。
SQL> show escape
escape OFF
SQL> set escape on
SQL> show escape
escape "\" (hex 5c)
SQL> insert into test values('test\&test');
已創建 1 行。
SQL> select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
A&B
testtest
TEST
--------------------
test&test
test&test
已選擇13行。
SQL> commit;
提交完成。
SQL> select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
A&B
testtest
TEST
--------------------
test&test
test&test
已選擇13行。
SQL> insert into test values('test\%test');
已創建 1 行。
SQL> insert into test values('test\_test');
已創建 1 行。
SQL> insert into test values('test\'test);
insert into test values('test'test)
*
第 1 行出現錯誤:
ORA-00917: 缺失逗號

SQL> insert into test values('test''test');
已創建 1 行。
SQL> select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
A&B
testtest
TEST
--------------------
test&test
test&test
test%test
test_test
test'test
已選擇16行。

『伍』 orcale中特殊字元怎麼轉義

在欄位里查找'%',涉及到Oracle的轉義字元,現總結如下: SQL> select * from test; TEST -------------------- sdd_kk d'd dfsfsa dffa%asfs 12345 1%2345 1%54321 2%54321 %%54321 A&B 已選擇9行。 其中包含特殊的字元分別為%,_,&

『陸』 暈了暈了,Oracle轉義字元

沒有轉義字元,如果有,就不用這么麻煩了。

四個單引號,最後的字元串中是一個單引號。
前面的那個三個單引號,是因為前面file前面還有一個單引號。

這個就死記硬背吧,用多了,就記個差不多了,用的時候再試試就出來了。

『柒』 Oracle中的單引號怎麼轉義

1、在轉義特殊字元的時候通常使用的就是單引號。但這種轉義方式很不直觀。

『捌』 oracle sqldr導入文件中有特殊字元與分割符一樣怎麼處理

咨詢記錄 · 回答於2021-12-01

『玖』 oracla特殊字元轉義的方法匯總

1、」&「 轉義
這個是Oracle裡面用來識別自定義變數的設置,現在我們在SQL*PLUS下將其關閉:
SQL Set define OFF;
然後再次執行導入腳本,OK!問題搞定。
注意:如果是在TOAD中執行,建議在每一個要導入的腳本第一行加上前面那句關閉define的話,否則當你導入第二個含有特殊字元的腳本的時候,又會出錯。
如果是在SQL*PLUS中執行,則只需要設置一次define OFF,後面就可以連續導入了。直到你重新設置define ON為止。
·方法二:在SQL語句中將'&'替換成chr(38),因為chr(38)是『&』的ASCII碼
SQL Select 'Tom' || chr(38) || 'Jerry' from al;
·方法三:分拆原來的字元串
SQL Select 'Tom' || '&' || 'Jerry' from al;
我們可以看到,方法一最為簡便,而且效率也最高。方法二因為有一個調用函數的過程,所以性能稍差。方法三需要兩次連接字元串,效率最差!
2、」 ' 「 轉義
·方法一:使用轉義字元
SQL Select 'test' || '''' from al;
第三個'才是我們真正的內容
·方法二:同樣是使用轉義字元,只不過方式不同而已
SQL Select 'test ''' from al;
注意:這里的第二個,第三個'就是我們上面方法一中提到的轉義符和真正的內容

『拾』 oracle 字元串拆分轉義

這樣不就行了嗎

創建表

createtabletest
(idvarchar2(10),
namevarchar2(10))

insertintotestvalues('wq','王強');
insertintotestvalues('lm','李明');
insertintotestvalues('xh','小紅');

創建函數

createorreplacefunctionf_str
(v_strvarchar2)
returnvarchar2
is
resultvarchar2(100);
begin
selectwm_concat(name)intoresultfromtest
whereidin
(selectcfrom
(withtestas(selectv_strcfromal)
selectsubstr(t.ca,instr(t.ca,',',1,c.lv)+1,instr(t.ca,',',1,c.lv+1)-(instr(t.ca,',',1,c.lv)+1))ASc
from(select','||c||','ASca,length(c||',')-nvl(length(REPLACE(c,',')),0)AScntFROMtest)t,
(<=100)cwherec.lv<=t.cnt));
returnresult;
end;