sqlite char,ascii函数

时间:2012-07-22 23:17:12

标签: sql sqlite

在sqlite中有没有解决缺少“char()”和“ascii()”函数的问题?

例如:

char(97) => 'a'
ascii('a') => 97

7 个答案:

答案 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的十六进制表示。