在 sqlite 中删除 9D(十六进制)字符
Posted
技术标签:
【中文标题】在 sqlite 中删除 9D(十六进制)字符【英文标题】:9D (Hex) character remove in sqlite 【发布时间】:2012-08-14 18:30:23 【问题描述】:我想从 my_table 中选择 family LIKE '%HEX(9D)' 家庭十六进制格式以 9D 十六进制结尾 我将excel文件转换为sqlite数据库,但是 我的一些数据在结束时添加了 9D 我无法正确搜索 请指导我 如何去除family栏中的9D十六进制字符?
【问题讨论】:
【参考方案1】:要在 SQLLite 中获取 HEX(9D),请使用 cast(X'9D' as text)
。所以要更新使用类似的东西:
UPDATE YOURTABLE SET YOURCOLUMN=REPLACE(YOURCOLUMN,cast(X'9D' as text),'') where YOURCOLUMN like '%'||cast(X'9D' as text)||'%'
;
或者只是
UPDATE YOURTABLE SET YOURCOLUMN=REPLACE(YOURCOLUMN,X'9D','') where YOURCOLUMN like '%'||x'9D'||'%';
【讨论】:
当我运行此脚本时显示此错误 SQL 错误:接近“'9D'”:语法错误 哦,谢谢。当我使用 like '%'||x'9D'||'%' 时出现问题;不检索所有记录,它返回一条记录,为什么? 当我只使用这个代码时会发生什么?--> UPDATE YOURTABLE SET YOURCOLUMN=REPLACE(YOURCOLUMN,X'9D','') 效果一样。如果 YOURCOLUMN 不包含 x'9d',则 REPLACE 将返回 YOURCOLUMN,因此不会更改 YOURCOLUMN。以上是关于在 sqlite 中删除 9D(十六进制)字符的主要内容,如果未能解决你的问题,请参考以下文章
C语言试题十六之写删除字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。