与前缀相关的大多数问题都针对字符串字段。我的情况有些不同。用户应该能够根据序列号浏览产品。序列号存储为整数。用户输入为十六进制。输出应该是具有此输入作为前缀但只能使用十六进制表示法的行。
例如,假设我的数据库中有0x1000
,0x100ab
和0xa0000b
作为BIGINT。
输入[0x]1
应该输出前两个,而输入[0x]a
应该仅输出第三个。
在将查询插入SQL之前,我对输入很灵活(即可以在Python中进行操作)。
编辑:
我使用PostgreSQL,但我不知道它是否会更改某些内容。
答案 0 :(得分:1)
您可以使用to_hex()
将整数转换为十六进制表示形式(不带0x
前缀)。然后可以将该字符串与LIKE
条件一起使用:
where concat('0x', to_hex(serial_number)) like '0x1%';
或者如果您去除0x
前缀则更简单:
where to_hex(serial_number) like '1%';