选择六边有前缀的行

时间:2019-02-28 15:56:35

标签: sql postgresql

与前缀相关的大多数问题都针对字符串字段。我的情况有些不同。用户应该能够根据序列号浏览产品。序列号存储为整数。用户输入为十六进制。输出应该是具有此输入作为前缀但只能使用十六进制表示法的行。

例如,假设我的数据库中有0x10000x100ab0xa0000b作为BIGINT。

输入[0x]1应该输出前两个,而输入[0x]a应该仅输出第三个。

在将查询插入SQL之前,我对输入很灵活(即可以在Python中进行操作)。

编辑:

我使用PostgreSQL,但我不知道它是否会更改某些内容。

1 个答案:

答案 0 :(得分:1)

您可以使用to_hex()将整数转换为十六进制表示形式(不带0x前缀)。然后可以将该字符串与LIKE条件一起使用:

where concat('0x', to_hex(serial_number)) like '0x1%';

或者如果您去除0x前缀则更简单:

where to_hex(serial_number) like '1%';