like 'C\_%' escape '\'
\t是四个字符空一次 如果是4的倍数+1时用\t就那样了 写了个方法可以参考使用。在不固定长度的字段使用输出保证能够对齐
public String toString() { return "学生ID:"+ blankStr(10,stuID) + "姓名:"+ blankStr(18,stuName) +"\t性别:"+gender+"\t年龄:"+age+"\t所在班级:"+classes; }
//按列宽补空格,对齐。避免使用\t对齐造成错位 //参数:列宽度,要格式化的字符串 private String blankStr(int colWidth,String str ) { String blank = ""; int blankLen = colWidth - str.length(); for (int i = 0; i < blankLen; i++) { str += " "; } return str; }
java转义字符 收藏 \n 回车(\u000a) \t 水平制表符(\u0009) \b 空格(\u0008) \r 换行(\u000d) \f 换页(\u000c) \' 单引号(\u0027) \" 双引号(\u0022) \\ 反斜杠(\u005c) \ddd 三位八进制 \udddd 四位十六进制
上周发现还有其它需要转义的字符,例如
String sName = "Java转义字符(补遗)"; sName = sName.replaceFirst("(补遗)",""); out.println(sName);
如果你以为会输出“Java转义字符”,那你就错了,事实上输出“Java转义字符()”,我也很奇怪,以为是中英文括号的问题,可是并不是,我不确定是否转义问题,解决方法是
sName = sName.replaceFirst("\\(补遗\\)","");
如果想查找“_cs”结尾的的账户 select * from [user] where loginname like '%_cs'是不行的,_ 被认为是任意的字符, 所以需要转义字符,有两种写法: select * from [user] where loginname like '%[_]cs' select * from [user] where loginname like '%/_cs' escape'/'
通配符 含义 % 包含零个或更多字符的任意字符串。 _ 任何单个字符。 [ ] 指定范围(例如 [a-f])或集合(例如 [abcdef])内的任何单个字符。 [^] 不在指定范围(例如 [^a - f])或集合(例如 [^abcdef])内的任何单个字符。
例如:
LIKE 'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。
LIKE '%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。
LIKE '%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。
LIKE '_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。
LIKE '[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
LIKE '[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。
LIKE 'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如 MacFeather)。 使用 ESCAPE 关键字定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串 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 ']' ]
如果想查找“_cs”结尾的的账户
select * from [user] where loginname like '%_cs'是不行的,_ 被认为是任意的字符,
所以需要转义字符,有两种写法:
select * from [user] where loginname like '%[_]cs' select * from [user] where loginname like '%/_cs' escape'/'
例如:
使用 ESCAPE 关键字定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串 5% 的字符串,请使用:
|
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Adi_liu/archive/2007/12/06/1920606.aspx
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/daryl715/archive/2007/02/14/1510014.aspx
使用 SQL 转义序列
: 全部
按照 JDBC API 的定义,Microsoft SQL Server JDBC Driver 支持使用 SQL 转义序列。转义序列用于 SQL 语句内,以告诉驱动程序应以不同的方式处理 SQL 字符串的转义部分。当 JDBC 驱动程序处理 SQL 字符串的转义部分时,它会将字符串的这一部分转换为 SQL Server 可以理解的 SQL 代码。
JDBC API 需要五种类型的转义序列,JDBC 驱动程序支持所有这些转义序列:
-
LIKE 通配符文本
-
函数处理
-
日期和时间文本
-
存储过程调用
-
外部联接
JDBC 驱动程序使用的转义序列语法如下所示:
{keyword ...parameters...}
注意: |
---|
SQL 转义处理对于 JDBC 驱动程序始终是打开的。 |
以下各部分介绍五种类型的转义序列以及 JDBC 驱动程序如何支持它们。
LIKE 通配符文本
JDBC 驱动程序支持 {escape 'escape character'}
语法,以便将 LIKE 子句通配符用作文本。例如,以下代码将返回 col3 的值,其中 col2 的值实际上以下划线开始(而不是对其使用通配符)。
ResultSet rst = stmt.executeQuery("SELECT col3 FROM test1 WHERE col2
LIKE '\\_%' {escape '\\'}");
注意: |
---|
转义序列必须位于 SQL 语句的结尾。如果一个命令字符串中有多个 SQL 语句,则转义序列需要位于每个相关 SQL 语句的结尾。 |
函数处理
JDBC 驱动程序使用以下语法在 SQL 语句中支持函数转义序列:
{fn functionName}
其中,functionName
是由 JDBC 驱动程序支持的函数。例如:
SELECT {fn UCASE(Name)} FROM Employee
下表列出当使用函数转义序列时,JDBC 驱动程序支持的各种函数:
字符串函数 | 数值函数 | 日期时间函数 | 系统函数 |
---|---|---|---|
ASCII CHAR CONCAT DIFFERENCE INSERT LCASE LEFT LENGTH LOCATE LTRIM REPEAT REPLACE RIGHT RTRIM SOUNDEX SPACE SUBSTRING UCASE |
ABS ACOS ASIN ATAN ATAN2 CEILING COS COT DEGREES EXP FLOOR LOG LOG10 MOD PI POWER RADIANS RAND ROUND SIGN SIN SQRT TAN TRUNCATE |
CURDATE CURTIME DAYNAME DAYOFMONTH DAYOFWEEK DAYOFYEAR EXTRACT HOUR MINUTE MONTH MONTHNAME NOW QUARTER SECOND TIMESTAMPADD TIMESTAMPDIFF WEEK YEAR |
DATABASE IFNULL USER |
注意: |
---|
如果您试图使用数据库不支持的函数,则将发生错误。 |
日期和时间文本
用于日期、时间和时间戳文本的转义语法如下所示:
{literal-type 'value'}
其中,literal-type
为以下值之一:
文本类型 | 说明 | 值格式 |
---|---|---|
d |
日期 |
yyyy-mm-dd |
t |
时间 |
hh:mm:ss [1] |
ts |
时间戳 |
yyyy-mm-dd hh:mm:ss[.f...] |
例如:
UPDATE Orders SET OpenDate={d '2005-01-31'}
WHERE OrderID=1025
存储过程调用
JDBC 驱动程序对于存储过程调用支持 {? = call proc_name(?,...)}
和
{call proc_name(?,...)}
转义语法,具体取决于您是否需要处理返回参数。
过程是存储在数据库中的可执行对象。通常,它是一个或更多的已经预编译的 SQL 语句。调用存储过程的转义序列语法如下所示:
{[?=]call procedure-name[([parameter][,[parameter]]...)]}
其中,procedure-name
指定存储过程的名称,parameter
指定存储过程参数。
有关将 call
转义序列用于存储过程的详细信息,请参阅使用带有存储过程的语句。
外部联接
JDBC 驱动程序支持 SQL92 左联接、右联接和完全外部联接语法。外部联接的转义序列如下所示:
{oj outer-join}
其中,外部联接为:
table-reference {LEFT | RIGHT | FULL} OUTER JOIN
{table-reference | outer-join} ON search-condition
其中,table-reference
为表名,search-condition
为您要用于这些表的联接条件。
例如:
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 驱动程序支持以下外部联接转义序列:
-
左外部联接
-
右外部联接
-
完全外部联接
-
嵌套外部联接