在sqlite中有没有解决缺少“char()”和“ascii()”函数的问题?
例如:
char(97) => 'a'
ascii('a') => 97
答案 0 :(得分:5)
我知道这太晚了,但是:
SELECT unicode('a') --ascii('a')
SELECT char(97) --char(97)
我希望这会有所帮助:)
答案 1 :(得分:3)
我想,如果您真的想要,可以使用ASCIICHAR
列和ASCIICODE
列创建“ASCII表”值表,并使用ASCII表填充它。然后可以在查询/子查询中执行查找:
SELECT ASCIICHAR FROM ASCIITABLE WHERE ASCIICODE = 97;
实际上,理查德·J·罗斯三世的评论是关于钱的 - 如果你使用的是SQLite,你可能是通过你的调用代码访问它,那么计算不能在那里完成吗?
答案 2 :(得分:2)
自编写此问题以来,SQLite显然添加了CHAR()
函数:
SELECT CHAR(97) -- Result is 'a'
但是,我在另一个方向上最接近的是使用HEX()
函数:
SELECT HEX('a') -- Result is 61 (hexadecimal, is equal to 97 decimal)
获取小数ASCII
字符值似乎需要一些复杂的工作......
答案 3 :(得分:0)
虽然转换不太可能,但sqlite会在此查询中识别ASCII:
select * from segments where substr(name, 1, 1) < 'A' or substr(name, 1, 1) > 'Z' and substr(name, 1, 1) < 'a';
可能的结果:0-9和所有ASCII&lt; &#39;一个&#39;
答案 4 :(得分:0)
实现用C语言执行转换的sqlite3用户函数ascii()和char()或通过支持sqlite3用户函数的另一种语言包装器(例如在python中),这将是微不足道的。
http://www.sqlite.org/c3ref/create_function.html
https://docs.python.org/2/library/sqlite3.html
答案 5 :(得分:0)
您可以根据此网站上的sqlite扩展程序库实现您自己的ascii版本:http://sqlite.1065341.n5.nabble.com/Extension-functions-for-SQLite-in-C-for-free-td18942.html
我已修改此代码以添加功能,但不是特别是你的。它应该非常简单。
答案 6 :(得分:0)
对于旧版本,使用强制转换(X&#39; 61&#39;作为文本)而不是char(97)。 61是97的十六进制表示。