在mysql中转义印地语字符

时间:2019-09-19 11:44:08

标签: mysql unicode character-encoding mysql-workbench hindi

我正在尝试使用MySQL从数据库中获取数据,该表在印地文中有一些条目,我希望通过在Google表格中运行SQL查询来自动过滤出那些在印地语中的印地文结果。

我已经能够从数据库中将数据获取到Google表格中,但是无法获取印度语过滤数据

select property, week,
  sum(Original_Stories) "Original Stories",
  sum(Wire_Stories) "Wire Stories",
  sum(Photo_Gallery) "Photo Gallery",
  sum(Video_Gallery) "Video Gallery",
from
  (select *, 
     case when a= "Original_Stories" then total end as "Original_Stories", 
     case when a= "Wire" then total end as "Wire_Stories", 
     case when a= "Photo" then total end as "Photo_Gallery", 
     case when a= "Video_Gallery" then total end as "Video_Gallery"
   from
     (select "Zee Hin" as property,
        yearweek(date_format(date_published,"%Y-%m-%d"),6) week,
        case
          when ((article_type like 'live_blog') or
                (article_type like '%article%' and agency_name like 'ज़ी न्यूज़ डेस्क') or
                (article_type like '%article%' and agency_name like 'एक्सक्लूसिव') or
                (article_type like '%article%' and agency_name like 'ज़ी मीडिया ब्‍यूरो') or
                (article_type like '%article%' and agency_name like 'Exclusive'))
            then "Original_Stories" 
          when (article_type like '%gallery%') then "Photo"
          when (article_type like '%video%') then "Video_Gallery"
          else 'Wire'
        end as a,
        count(distinct article_id) total,
        count(distinct date_format(date_published, "%Y-%m-%d")) days
      from
        zeenews_hindi
      where date_format(date_published, "%Y-%m-%d") >= '2018-12-30'
      group by 2,3
    ) temp
  ) agg
group by 1,2

我需要印地语过滤器的数据

3 个答案:

答案 0 :(得分:1)

查看此内容:How can I find non-ASCII characters in MySQL?

使用MySQL,您可以通过这种查询来检测非罗马字符。

SELECT whatever
  FROM tableName 
 WHERE columnToCheck <> CONVERT(columnToCheck USING latin1)

这可以通过将您的列与其在latin1(aka iso8859-1)中呈现的值进行比较来进行工作,该字符集适用于西欧和美国。

例如,此查询

SELECT 'Some Hindi: ज़ी मीडिया ब्‍यूरो', CONVERT ('Some Hindi: ज़ी मीडिया ब्‍यूरो' USING LATIN1);

产生这些结果

Some Hindi: ज़ी मीडिया ब्‍यूरो         Some Hindi: ??? ?????? ???????

?字符是替换字符。

答案 1 :(得分:0)

MySQL 8支持

agency_name regexp '\\p{script=Devanagari}'

此处\ p引入了满足字符属性过滤器的一类字符。在这种情况下,使用Unicode脚本“ Devanagari”。如果这还不能涵盖您要为北印度语找到的所有字符,则可以添加其他Unicode脚本,块或范围。 (检测文本中的语言miami是另一种动物,n'est-ce pas吗?)

答案 2 :(得分:0)

SELECT ... WHERE HEX(col) REGEXP '(..)*E0A[45]'

将获取其中col包含一些梵文字符(可能还有其他字符)的行。

UTF-8十六进制,大多数E0A4xx带有字母; E0A5xx具有“标志”。