如何在SQL CHAR中编码字符串

时间:2015-04-29 00:04:55

标签: python python-2.7 module

'admin'编码为= CHAR(97, 100, 109, 105, 110)

我想知道是否有一个模块或方法将字符串的每个字母转换为SQL CHAR。如果没有,我该如何自行转换?我可以访问一个图表,其中a = 97,b = 98等,如果有帮助的话。

1 个答案:

答案 0 :(得分:2)

我不确定你为什么需要这个。获取包含ASCII或Unicode或任何代码点的CHAR字段的字符串表示并不难。但是我很确定你不需要它,因为数据库已经知道如何将它们与SQL中传递的字符串进行比较等等。除非你试图比如生成一个看起来完全正确的转储就像你从其他工具中获得的那些。但是,假设您需要这样做,请按照以下方式进行操作。

我认为您正在寻找ord功能:

  

给定表示一个Unicode字符的字符串,返回表示该字符的Unicode代码点的整数。例如,ord(' a')返回整数97和ord(' \ u2020')返回8224.这是chr()的反转。

这是有效的,因为Python可以访问您拥有的相同图表 - 事实上,它可以访问一堆不同的图表,每个图表对于它所知道的每种编码。实际上,该图表几乎就是编码

所以,例如:

def encode_as_char(s):
    return 'CHAR({})'.format(', '.join(str(ord(c)) for c in s))

或者,如果您只想要一个数字列表,而不是由这些数字组成的字符串,那就更简单了:

def encode_as_char(s):
    return [ord(c) for c in s]

这是假设(a)您的数据库存储Unicode字符并且您正在使用Python 3,或者(b)您的数据库存储8位字符并且您正在使用Python 2。否则,您还需要encodedecode步骤。

对于UTF-8数据库的Python 3 Unicode字符串(请注意,我们不需要ord,因为Python 3 bytes实际上是一系列数字):< / p>

def encode_as_utf8_char(s):
    return 'CHAR({})'.format(', '.join(str(c) for c in s.encode('utf-8')))

对于Python 2 UTF-8字符串到Unicode数据库:

def encode_utf8_as_char(s):
    return 'CHAR({})'.format(', '.join(str(ord(c)) for c in s.decode('utf-8')))