sqlite正则表达式:' X'的返回计数来自列中的值

时间:2015-12-22 17:53:43

标签: regex sqlite pandasql

我正在使用pandasql来转换数据。在查询中,我想提取电子邮件地址中的句点数量('。')。 SQLite似乎不支持正则表达式。

在SQL中我可以写:

length(regexp_replace(email, '[^.]', '', 'g')) as email_period

*#applying this to the email (my.first_name@abc.com) would return 2*

期待您使用SQLite获得解决方案的专业知识。提前谢谢。

1 个答案:

答案 0 :(得分:3)

您可以使用简单的REPLACELENGTH来计算期间数:

CREATE TABLE tab(email VARCHAR(100));

INSERT INTO tab(email) 
VALUES ('my.first_name@abc.com'),('my.first.name@abc.com.ru');

SELECT email, LENGTH(email) - LENGTH(REPLACE(email, '.', '')) AS  email_period
FROM tab;

SqlFiddleDemo

修改

计算数字:

SELECT email,
   LENGTH(email) - 
   LENGTH(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(
             REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(email, '0', '')
             ,'1', ''),'2', ''),'3', ''),'4', '')  
             ,'5', ''),'6', ''),'7', ''),'8', '')  
             ,'9', '')) AS email_digits
FROM tab

SqlFiddleDemo2