如何使用 MySQL 正则表达式查询包含日文假名的字段?
如何在 mysql 中使用正则表达式查询带有日文假名的字段?
在 mysql 中,您遇到的查询不准确的问题可能是由于正则表达式的限制所致。图中的正则表达式 [ァ-ン] 只匹配片假名,而 [ぁ-ん] 仅匹配平假名。这导致了在查询中同时包含平假名和片假名的标题时,出现了意外的结果。
要有效地查找带有日文假名的标题,可以使用一个自定义函数来检查文本中是否存在假名。以下是一个实现此功能的 mysql 函数:
create definer=`wq19bar`@`%` function `jp_char_inside`(s text) returns int(11) begin declare h text; declare p integer; declare l integer; declare head text; declare utf_8 text; set h = hex(s); set p = 1; set l = length(h); while p <= l do set head = substr(h, p, 1); if head < '8' then set p = p + 2; else set utf_8 = substr(h, p, 6); if (utf_8 >= 'e38181' and utf_8 <= 'e3829e') then return 1; end if; if (utf_8 >= 'e382a1' and utf_8 <= 'e383be') then return 1; end if; set p = p + 6; end if; end while; return 0; end
使用此函数,您可以使用以下查询来查找带有日文假名的标题:
SELECT * FROM table_name WHERE jp_char_inside(title) = 1;