pg-mvc-service 2.0.128 → 2.0.129
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -388,32 +388,30 @@ class WhereExpression {
|
|
|
388
388
|
japanese: true
|
|
389
389
|
};
|
|
390
390
|
}
|
|
391
|
-
|
|
391
|
+
let sql = expression;
|
|
392
|
+
// 1. ひらがな → カタカナ (TRANSLATEを使用)
|
|
393
|
+
// NORMALIZEはひらがなをカタカナにはしないので、これは残します
|
|
392
394
|
if ((replaceOption === null || replaceOption === void 0 ? void 0 : replaceOption.hiraganaToKatakana) === true) {
|
|
393
|
-
|
|
394
|
-
|
|
395
|
+
const from = 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんゔがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょっー、。・「」゛゜';
|
|
396
|
+
const to = 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョッー、。・「」゛゜';
|
|
397
|
+
sql = `TRANSLATE(${sql}, '${from}', '${to}')`;
|
|
395
398
|
}
|
|
399
|
+
// 2. 漢数字 → 算用数字 (TRANSLATEを使用)
|
|
400
|
+
// これもNORMALIZEの管轄外なので残しますが、1つのTRANSLATEにまとめます(SQLが速くなります)
|
|
396
401
|
if (((_a = replaceOption === null || replaceOption === void 0 ? void 0 : replaceOption.numeric) === null || _a === void 0 ? void 0 : _a.japanese) === true) {
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
objs['三参'] = '33';
|
|
401
|
-
objs['四肆'] = '44';
|
|
402
|
-
objs['五伍'] = '55';
|
|
403
|
-
objs['六陸'] = '66';
|
|
404
|
-
objs['七漆'] = '77';
|
|
405
|
-
objs['八捌'] = '88';
|
|
406
|
-
objs['九玖'] = '99';
|
|
402
|
+
const from = '零〇一壱弌二弐三参四肆五伍六陸七漆八捌九玖';
|
|
403
|
+
const to = '001112233445566778899';
|
|
404
|
+
sql = `TRANSLATE(${sql}, '${from}', '${to}')`;
|
|
407
405
|
}
|
|
406
|
+
// 3. 全角半角の統一 (ここを NORMALIZE に変更!)
|
|
407
|
+
// 元の halfToFull ブロックを削除し、この処理に置き換えます
|
|
408
408
|
if ((replaceOption === null || replaceOption === void 0 ? void 0 : replaceOption.halfToFull) === true) {
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
409
|
+
// NORMALIZE(..., NFKC) は以下の処理を自動で行います
|
|
410
|
+
// - 全角英数字 → 半角英数字 (例: A → A)
|
|
411
|
+
// - 半角カナ → 全角カナ (例: ア → ア)
|
|
412
|
+
// - 濁点の結合 (例: カ + ゙ → ガ)
|
|
413
|
+
sql = `NORMALIZE(${sql}, NFKC)`;
|
|
414
414
|
}
|
|
415
|
-
let sql = expression;
|
|
416
|
-
Object.keys(objs).forEach(key => sql = `TRANSLATE(${sql} ,'${key}','${objs[key]}')`);
|
|
417
415
|
return sql;
|
|
418
416
|
}
|
|
419
417
|
}
|
package/package.json
CHANGED
|
@@ -423,36 +423,33 @@ export class WhereExpression {
|
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
425
|
|
|
426
|
-
|
|
426
|
+
let sql = expression;
|
|
427
|
+
// 1. ひらがな → カタカナ (TRANSLATEを使用)
|
|
428
|
+
// NORMALIZEはひらがなをカタカナにはしないので、これは残します
|
|
427
429
|
if (replaceOption?.hiraganaToKatakana === true) {
|
|
428
|
-
|
|
429
|
-
|
|
430
|
+
const from = 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんゔがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょっー、。・「」゛゜';
|
|
431
|
+
const to = 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョッー、。・「」゛゜';
|
|
432
|
+
sql = `TRANSLATE(${sql}, '${from}', '${to}')`;
|
|
430
433
|
}
|
|
431
434
|
|
|
435
|
+
// 2. 漢数字 → 算用数字 (TRANSLATEを使用)
|
|
436
|
+
// これもNORMALIZEの管轄外なので残しますが、1つのTRANSLATEにまとめます(SQLが速くなります)
|
|
432
437
|
if (replaceOption?.numeric?.japanese === true) {
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
objs['三参'] = '33';
|
|
437
|
-
objs['四肆'] = '44';
|
|
438
|
-
objs['五伍'] = '55';
|
|
439
|
-
objs['六陸'] = '66';
|
|
440
|
-
objs['七漆'] = '77';
|
|
441
|
-
objs['八捌'] = '88';
|
|
442
|
-
objs['九玖'] = '99';
|
|
438
|
+
const from = '零〇一壱弌二弐三参四肆五伍六陸七漆八捌九玖';
|
|
439
|
+
const to = '001112233445566778899';
|
|
440
|
+
sql = `TRANSLATE(${sql}, '${from}', '${to}')`;
|
|
443
441
|
}
|
|
444
442
|
|
|
443
|
+
// 3. 全角半角の統一 (ここを NORMALIZE に変更!)
|
|
444
|
+
// 元の halfToFull ブロックを削除し、この処理に置き換えます
|
|
445
445
|
if (replaceOption?.halfToFull === true) {
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
446
|
+
// NORMALIZE(..., NFKC) は以下の処理を自動で行います
|
|
447
|
+
// - 全角英数字 → 半角英数字 (例: A → A)
|
|
448
|
+
// - 半角カナ → 全角カナ (例: ア → ア)
|
|
449
|
+
// - 濁点の結合 (例: カ + ゙ → ガ)
|
|
450
|
+
sql = `NORMALIZE(${sql}, NFKC)`;
|
|
451
451
|
}
|
|
452
452
|
|
|
453
|
-
let sql = expression;
|
|
454
|
-
Object.keys(objs).forEach(key => sql = `TRANSLATE(${sql} ,'${key}','${objs[key]}')`);
|
|
455
|
-
|
|
456
453
|
return sql;
|
|
457
454
|
}
|
|
458
455
|
}
|