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'/'
|
本文来自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 驱动程序支持以下外部联接转义序列:
-
左外部联接
-
右外部联接
-
完全外部联接
-
嵌套外部联接