8

sqlite 中是否有任何解决方法可以弥补“char()”和“ascii()”函数的缺失?

例如:

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

7 回答 7

14

我知道这为时已晚,但是:

SELECT unicode('a') --ascii('a')
SELECT char(97)     --char(97)

我希望这有帮助 :)

于 2017-05-09T15:22:10.080 回答
3

从写这个问题开始,SQLite 显然增加了一个CHAR()功能:

SELECT CHAR(97) -- Result is 'a'

但是,我在另一个方向上最接近的是HEX()函数:

SELECT HEX('a') -- Result is 61 (hexadecimal, is equal to 97 decimal)

获得十进制ASCII字符值似乎需要一些复杂的工作......

于 2015-07-31T18:52:40.527 回答
2

我想,如果你真的想要,你可以创建一个包含一ASCIICHAR列和一ASCIICODE列的值的“ASCII 表”表,并用 ASCII 表填充它。然后您的查找可以在查询/子查询中执行:

SELECT ASCIICHAR FROM ASCIITABLE WHERE ASCIICODE = 97;

确实,Richard J. Ross III 的评论是关于钱的——如果您使用 SQLite,您可能正在通过您的调用代码访问它,计算不能在那里完成吗?

于 2012-07-23T01:01:17.880 回答
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 < 'a'

于 2014-05-09T00:36:55.560 回答
0

实现在 C 中执行转换的 sqlite3 用户函数 ascii() 和 char() 或通过支持 sqlite3 用户函数(例如在 python 中)的另一种语言包装器将是微不足道的。

http://www.sqlite.org/c3ref/create_function.html
https://docs.python.org/2/library/sqlite3.html

于 2014-07-22T18:29:11.447 回答
0

您可以基于此站点上的 sqlite 扩展库实现您自己的 ascii 版本:http: //sqlite.1065341.n5.nabble.com/Extension-functions-for-SQLite-in-C-for-free- td18942.html

我已修改此代码以添加功能,但不是专门针对您的。它应该很简单。

于 2015-07-21T21:36:39.867 回答
0

对于旧版本,使用 cast(X'61' as text) 而不是 char(97)。61 是 97 的十六进制表示。

于 2018-06-03T21:29:27.733 回答