SQLServer转义问题
| 經(jīng)常惆悵于Sql中字符變量的轉(zhuǎn)義問題,剛剛看到一篇文章感覺不錯,借來分享給大家 SELECT Count(0)和SELECT COUNT(*)和SELECT COUNT(??) 意思一樣的。 ? sql單引號問題解決 用轉(zhuǎn)義 提交sql語句時老因為單引號出錯 百度了一下用兩個單引號替換單引號就行了 ? ? content=content.replace("'","''"); SQL中的轉(zhuǎn)義字符怎么用呢? 我的數(shù)據(jù)庫中存在C_這樣開頭的表,也有C開頭的表,我現(xiàn)在使用like查詢出以C_開頭的表,則使用LIKE 'C_%'時,下劃線被當作一個任意字符的關(guān)鍵字使用,怎么能夠查到我要的數(shù) like 'C\_%' escape '\' \t是四個字符空一次?? 如果是4的倍數(shù)+1時用\t就那樣了 寫了個方法可以參考使用。在不固定長度的字段使用輸出保證能夠?qū)R java轉(zhuǎn)義字符 收藏 \n 回車(\u000a) \t 水平制表符(\u0009) \b 空格(\u0008) \r 換行(\u000d) \f 換頁(\u000c) \' 單引號(\u0027) \" 雙引號(\u0022) \\ 反斜杠(\u005c) \ddd 三位八進制 \udddd 四位十六進制 上周發(fā)現(xiàn)還有其它需要轉(zhuǎn)義的字符,例如 String sName = "Java轉(zhuǎn)義字符(補遺)"; sName = sName.replaceFirst("(補遺)",""); out.println(sName); 如果你以為會輸出“Java轉(zhuǎn)義字符”,那你就錯了,事實上輸出“Java轉(zhuǎn)義字符()”,我也很奇怪,以為是中英文括號的問題,可是并不是,我不確定是否轉(zhuǎn)義問題,解決方法是 sName = sName.replaceFirst("\\(補遺\\)",""); SQL查詢中的轉(zhuǎn)義字符如果想查找“_cs”結(jié)尾的的賬戶 select * from [user] where loginname like '%_cs'是不行的,_ 被認為是任意的字符, 所以需要轉(zhuǎn)義字符,有兩種寫法: select * from [user] where loginname like '%[_]cs' select * from [user] where loginname like '%/_cs' escape'/' 通配符 含義 % 包含零個或更多字符的任意字符串。 _ 任何單個字符。 [ ] 指定范圍(例如 [a-f])或集合(例如 [abcdef])內(nèi)的任何單個字符。 [^] 不在指定范圍(例如 [^a - f])或集合(例如 [^abcdef])內(nèi)的任何單個字符。 LIKE 'Mc%' 將搜索以字母 Mc 開頭的所有字符串(如 McBadden)。 LIKE '%inger' 將搜索以字母 inger 結(jié)尾的所有字符串(如 Ringer、Stringer)。 LIKE '%en%' 將搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。 LIKE '_heryl' 將搜索以字母 heryl 結(jié)尾的所有六個字母的名稱(如 Cheryl、Sheryl)。 LIKE '[CK]ars[eo]n' 將搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。 LIKE '[M-Z]inger' 將搜索以字符串 inger 結(jié)尾、以從 M 到 Z 的任何單個字母開頭的所有名稱(如 Ringer)。 LIKE 'M[^c]%' 將搜索以字母 M 開頭,并且第二個字母不是 c 的所有名稱(如 MacFeather)。 使用 ESCAPE 關(guān)鍵字定義轉(zhuǎn)義符。在模式中,當轉(zhuǎn)義符置于通配符之前時,該通配符就解釋為普通字符。例如,要搜索在任意位置包含字符串 5% 的字符串,請使用: WHERE ColumnA LIKE '%5/%%' ESCAPE '/'符號 含義 LIKE '5[%]' 5% LIKE '5%' 5 后跟 0 個或更多字符的字符串 LIKE '[_]n' _n LIKE '_n' an, in, on (and so on) LIKE '[a-cdf]' a, b, c, d, or f LIKE '[-acdf]' -, a, c, d, or f LIKE '[ [ ]' [ LIKE ']' ] ? SQL查詢中的轉(zhuǎn)義字符 2007-09-20 08:57
? 本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/Adi_liu/archive/2007/12/06/1920606.aspx 本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/daryl715/archive/2007/02/14/1510014.aspx 使用 SQL 轉(zhuǎn)義序列 開啟低帶寬視圖 語言篩選器 : 全部 Visual Basic C# C++ J# JScript XAML F# 同時提供下列產(chǎn)品的其他版本:
? ? 按照 JDBC API 的定義,Microsoft SQL Server JDBC Driver 支持使用 SQL 轉(zhuǎn)義序列。轉(zhuǎn)義序列用于 SQL 語句內(nèi),以告訴驅(qū)動程序應以不同的方式處理 SQL 字符串的轉(zhuǎn)義部分。當 JDBC 驅(qū)動程序處理 SQL 字符串的轉(zhuǎn)義部分時,它會將字符串的這一部分轉(zhuǎn)換為 SQL Server 可以理解的 SQL 代碼。 JDBC API 需要五種類型的轉(zhuǎn)義序列,JDBC 驅(qū)動程序支持所有這些轉(zhuǎn)義序列:
JDBC 驅(qū)動程序使用的轉(zhuǎn)義序列語法如下所示: {keyword ...parameters...}
以下各部分介紹五種類型的轉(zhuǎn)義序列以及 JDBC 驅(qū)動程序如何支持它們。 LIKE 通配符文本JDBC 驅(qū)動程序支持 {escape 'escape character'} 語法,以便將 LIKE 子句通配符用作文本。例如,以下代碼將返回 col3 的值,其中 col2 的值實際上以下劃線開始(而不是對其使用通配符)。 ? ? 復制代碼 ResultSet rst = stmt.executeQuery("SELECT col3 FROM test1 WHERE col2 LIKE '\\_%' {escape '\\'}");
函數(shù)處理JDBC 驅(qū)動程序使用以下語法在 SQL 語句中支持函數(shù)轉(zhuǎn)義序列: ? ? 復制代碼 {fn functionName}其中,functionName 是由 JDBC 驅(qū)動程序支持的函數(shù)。例如: ? ? 復制代碼 SELECT {fn UCASE(Name)} FROM Employee下表列出當使用函數(shù)轉(zhuǎn)義序列時,JDBC 驅(qū)動程序支持的各種函數(shù): ?
日期和時間文本用于日期、時間和時間戳文本的轉(zhuǎn)義語法如下所示: ? ? 復制代碼 {literal-type 'value'}其中,literal-type 為以下值之一: ?
例如: ? ? 復制代碼 UPDATE Orders SET OpenDate={d '2005-01-31'} WHERE OrderID=1025存儲過程調(diào)用JDBC 驅(qū)動程序?qū)τ诖鎯^程調(diào)用支持 {? = call proc_name(?,...)} 和 {call proc_name(?,...)} 轉(zhuǎn)義語法,具體取決于您是否需要處理返回參數(shù)。 過程是存儲在數(shù)據(jù)庫中的可執(zhí)行對象。通常,它是一個或更多的已經(jīng)預編譯的 SQL 語句。調(diào)用存儲過程的轉(zhuǎn)義序列語法如下所示: ? ? 復制代碼 {[?=]call procedure-name[([parameter][,[parameter]]...)]}其中,procedure-name 指定存儲過程的名稱,parameter 指定存儲過程參數(shù)。 有關(guān)將 call 轉(zhuǎn)義序列用于存儲過程的詳細信息,請參閱使用帶有存儲過程的語句。 外部聯(lián)接JDBC 驅(qū)動程序支持 SQL92 左聯(lián)接、右聯(lián)接和完全外部聯(lián)接語法。外部聯(lián)接的轉(zhuǎn)義序列如下所示: ? ? 復制代碼 {oj outer-join}其中,外部聯(lián)接為: ? ? 復制代碼 table-reference {LEFT | RIGHT | FULL} OUTER JOIN {table-reference | outer-join} ON search-condition其中,table-reference 為表名,search-condition 為您要用于這些表的聯(lián)接條件。 例如: ? ? 復制代碼 SELECT Customers.CustID, Customers.Name, Orders.OrderID, Orders.Status FROM {oj Customers LEFT OUTER JOIN Orders ON Customers.CustID=Orders.CustID} WHERE Orders.Status='OPEN'JDBC 驅(qū)動程序支持以下外部聯(lián)接轉(zhuǎn)義序列:
|
轉(zhuǎn)載于:https://www.cnblogs.com/YangFei-wow/archive/2012/07/10/2584101.html
總結(jié)
以上是生活随笔為你收集整理的SQLServer转义问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在 ubuntu下面利用libpcap编
- 下一篇: linux cmake编译源码,linu