・H2ってだいたいOracleと構文同じっぽいが、 LIKE文を%つけずに書いたら部分一致になる?
⇒なりません。
・REPLACEを使って小文字->大文字変換しているSQLを見かけたが、これTRANSLATEじゃないの?
SELECT REPLACE('ABCDE', 'ACE', 'XXX') FROM DUAL -> ABCDE (文字列の置換)
SELECT TRANSLATE ('ABCDE', 'ACE', 'XXX') FROM DUAL -> XBXDX (1文字ずつの置換)
・バリデーション
数値チェック
// Nullはチェックしない,文字列の場合型変換例外
// 小数/整数依らず使用可能。Stringはダメ。
@Min(10) // 9以下でエラー
private Double number;
@Max(10) // 11以上でエラー
private Double number;
@Range(min=10, max=20) // 9以下または21以上でエラー
private Double number;
@Digits(integer=2, fraction = 4) // 整数部が3桁以上または小数部が5桁以上でエラー
private Double number;
@Digits(integer=2, fraction = 0) // 整数部が3桁以上または小数部が1桁以上でエラー
private Double number;
文字列チェック
// Nullはチェックしない,文字列の場合型変換例外)
// 全角文字の場合チェックが発生しない。
@Size(min=2,max=4) // 1桁以下または5桁以上でエラー
private String text;
// 全角文字も1文字1カウントでチェックされる。
@Length(min=2, max=4) // 1桁以下または5桁以上でエラー
書くの疲れた。(´・ω・`)
@NotNull : Nullでないこと
@NotEmpty : Null or 空白でない
@NotBlank : null or 空白 or スペースのみでない
"デフォルトの場合,FormのパラメタがStringの場合,
リクエスト時に空白が設定されてしまうため、
「入力時のみ,5文字以上でエラー」とするには
空白⇒Nullの変換処理が必要。
InitBinderを付けるとHandlerメソッド呼び出し前に呼ばれる。
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor (String.class, new StringTrimmerEditor(true));
}
■参考サイト
https://docs.oracle.com/javase/jp/7/api/java/util/regex/Pattern.html#ucc
全角や半角の文字一覧
https://junk-blog.com/font_list/
SJIS, UTF8コード一覧表
http://ash.jp/code/unitbl21.htm
UTF-8コード一覧表
http://orange-factory.com/sample/utf8/code3/e3.html#Katakana
カタカナの領域とは
http://pentan.info/doc/unicode_list.html
★全角カナ @Pattern(regexp = "^[ァ-タダ-ヶー]+$")
⇒ タとダが非連続なのはUTF-8の文字コード上で連続していないから
★全角文字(半角以外) @Pattern(regexp = ^[^ -~。-゚]+$)
⇒ 半角英数字,半角記号,半角カナ以外の連続文字列
⇒ そういえば全角ひらがなってないんだね。