Sqlite I';I’我只想要字符(没有符号、数字和空格)

Sqlite I';I’我只想要字符(没有符号、数字和空格),sqlite,autohotkey,Sqlite,Autohotkey,这应该用SQLite来完成 就这样, 是的,我知道,如果我使用UDF(用户定义函数),这是一项非常简单的任务 但是,我在这方面有很大的困难 所以,寻找另一种方法(无UDF方法)来实现我的目标 谢谢 供您参考, 我留下了一个无法自定义的链接(使用自动热键) 我相信您可以根据以下内容制定解决方案:- WITH RECURSIVE eachchar(counter,rowid,c,rest) AS ( SELECT 1,rowid,'',mycolumn AS rest FROM m

这应该用SQLite来完成

就这样,

是的,我知道,如果我使用UDF(用户定义函数),这是一项非常简单的任务

但是,我在这方面有很大的困难

所以,寻找另一种方法(无UDF方法)来实现我的目标

谢谢

供您参考,

我留下了一个无法自定义的链接(使用自动热键)


我相信您可以根据以下内容制定解决方案:-

WITH RECURSIVE eachchar(counter,rowid,c,rest) AS (
        SELECT 1,rowid,'',mycolumn AS rest FROM mytable
        UNION ALL 
            SELECT counter+1,rowid,substr(rest,1,1),substr(rest,2) FROM eachchar WHERE length(rest) > 0 LIMIT 100
    )
SELECT group_concat(c,'') AS mycolumn, myothercolumn, mycolumn AS original
FROM eachchar JOIN mytable ON eachchar.rowid = mytable.rowid 
WHERE length(c) > 0 
    AND (
        unicode(c) BETWEEN unicode('a') AND unicode('z') 
        OR unicode(c) BETWEEN unicode('A') AND unicode('Z')
    )
GROUP BY rowid;
演示:- 也许可以考虑以下几点:-

/* Create the Test Environment */
DROP TABLE IF EXISTS mytable;
CREATE TABLE IF NOT EXISTS mytable (mycolumn TEXT, myothercolumn);
/* Add the Testing data */
INSERT INTO mytable VALUES
    ('123-abc_"D E F()[]{}~`!@#$%^&*-+=|\?><<:;''','A')
    ,('123-xyz_"X Y Z()[]{}~`!@#$%^&*-+=|\?><<:;''','B')
    ,('123-abc_"A B C()[]{}~`!@#$%^&*-+=|\?><<:;''','C')
;

/* split each character thenconcatenat only the required characters*/
WITH RECURSIVE eachchar(counter,rowid,c,rest) AS (
        SELECT 1,rowid,'',mycolumn AS rest FROM mytable
        UNION ALL 
            SELECT counter+1,rowid,substr(rest,1,1),substr(rest,2) FROM eachchar WHERE length(rest) > 0 LIMIT 100
    )
SELECT group_concat(c,'') AS mycolumn, myothercolumn, mycolumn AS original
FROM eachchar JOIN mytable ON eachchar.rowid = mytable.rowid 
WHERE length(c) > 0 
    AND (
        unicode(c) BETWEEN unicode('a') AND unicode('z') 
        OR unicode(c) BETWEEN unicode('A') AND unicode('Z')
    )
GROUP BY rowid;
/* Cleanup Test Environment */
DROP TABLE IF EXISTS mytable;
/*创建测试环境*/
如果mytable存在,则删除该表;
如果mytable(mycolumn文本、myothercolumn)不存在,则创建表;
/*添加测试数据*/
插入到mytable值中

('123-abc_ude F()[]{}`!@$%^&*-+=\?>哇..看起来很高级(我是初学者)。非常感谢,我会看一看,并在一定时间内执行它。@KitaNagoya你可能想看看。哦,
限制1000
是一个以防万一的限制器,所以你可能想增加它或取消它作为
长度(rest)
应该足以停止递归。是的,我是一个初学者,因此,您的链接应该是我漫长而痛苦旅程的很好指南。再次感谢。