gpt4 book ai didi

Mysql:混合书写方向/在以下情况下获取第一个字符

转载 作者:行者123 更新时间:2023-11-29 11:52:30 25 4
gpt4 key购买 nike

我的 MySQL-Table 包含混合字母和书写方向的内容。我想获取按字母顺序排列的每行的第一个字母。

SELECT 
term,
left(term, 1)
FROM
terms

结果:

'H مشبك ملتوي ذو شكل', 'H'
'م' , 'مكعّب فسيفساء'
'H Word', 'H'

正如您所看到的,对于阿拉伯语或拉丁语脚本的术语,left 正确地采用第一个字母,即最左边的字母,或者如果是阿拉伯语,则为最右边的字母。如果是混合术语,它会优先考虑拉丁部分并从左到右阅读,而我想要相反的并获得最正确的字符。 (我不能 tka 最正确的字符,因为在纯阿拉伯语和纯拉丁语中我会得到最后一个字符)。

因此预期结果应该是

'H مشبك ملتوي ذو شكل'
-> 'م'
'م' , 'مكعّب فسيفساء'
'H Word', 'H'

我认为可能有一个技巧可以解决这个问题,但也许有些人以前遇到过这个问题并且知道一些:)

有什么想法吗?预先感谢您!

编辑:创建测试数据,如下所示:

drop table if exists terms;
create table terms (
term text
) ENGINE=MyISAM AUTO_INCREMENT=3981 DEFAULT CHARSET=utf8;

insert into terms (term) values ('H مشبك ملتوي ذو شكل');
insert into terms (term) values ('مكعّب فسيفساء');
insert into terms (term) values ('H Word');

最佳答案

您可以尝试以下操作。如果最后一个字符不是拉丁字符,则它会带来阿拉伯语的第一个字符(最后一个),否则它会带来拉丁语的第一个字符(第一个)。但请注意,您必须检查记录的最后一个字符是否为数字。

SQL Fiddle

SELECT term, IF(TRIM(term) NOT RLIKE '[A-Z]$', RIGHT(TRIM(term), 1), LEFT(TRIM(term), 1)) AS first_char
FROM terms;

关于Mysql:混合书写方向/在以下情况下获取第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33809236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com