2 m0 37318955 m0_37318955 于 2017.01.12 11:14 提问

iOS sql取数据的时候group by 的字段存在空字符串

SELECT count(fileID), artist From files WHERE type = 1 group by artist; 表中的artist有的含有空字符串,所以当我分完组,取出每组数据的时候出错,
取每组数据的方法是SELECT * FROM files WHERE artist like ? AND files.type = 1 order by pinyin asc;artist like的值就是根据group by的值直接传递过去,这样就会导致传的值因为在数据库里面有空格,获取出来没空格了,所以取不出来了,除非加个%,可是加%就会把所有的都取出来,但是group by 的组会有多个

1个回答

zhangpan_soft
zhangpan_soft   Rxr 2017.01.12 13:00

不用占位符的形式就好了,不过这也有弊端,就是容易被攻击,也就是假如根据是"a b",就写成SELECT * FROM files WHERE artist like 'a b' AND files.type = 1 order by pinyin asc;就好了,另外,你的这个like好像只是一个值,没必要用like,假如是根据"a b"开头,就写成'a b%'等等,应该是通配符问题,用占位符操作一般没问题,应该是你的写入有问题

m0_37318955
m0_37318955 你好,是空字符串不是空格,就是看起来是没有任何变化的,但是用like '陈奕迅'取不出来,用like'%陈奕迅'就取得出来可是group by分组的陈奕迅有好几种
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MySQL之——GROUP BY分组取字段最大值
假设有一个业务场景,需要查询用户登录记录信息,其中表结构如下: CREATE TABLE `tb` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL, `ip` varchar(16) NOT NULL, `login_time` datetime, PRIMARY KEY (`id`), KEY
模型获取得值为<null>转为" "空字符串
#import "CodeModel.h" @implementation CodeModel -(void)setValue:(id)value forUndefinedKey:(NSString *)key {      } -(id)valueForUndefinedKey:(NSString *)key {   
SQL group by后获取其他字段(多种方法)
最近帮朋友处理一批数据,将指定的列重复的数据拿出来。这些数据在excel里。有10W条左右。由于EXCEL不好操作。就想着将数据导入数据库通过SQL语句来操作。 导入数据库成功了,但由于SQL不是很牛,所以查询有些问题。 我用group by 把重复的拿掉,但还有个问题,大家都知道用group by的话,select 后面指定的字段必须与group by后面的一致。group by 只有个别字
sql 一对多情况下 Group by分组 结果多列合并
部分原始表数据 需求: 按routineId进行group分组 难点:一个routineId对应多个part,需先将part合并,再分组 解决:xml select routineId,(select [partnr]+',' from autowork.dbo.PartOnRoutine for XML PATH('')) AS PARTNRS from autowo
利用group by查询id最大那条的数据
有时会有这样的需求,需要查询字段a相同的所有数据里面的ID最大的某个数据 比如说账单都是按时间插入的,我们要查询 洗脚 账单里面 最近更新 的那条的支付金额 一般来说,如果支付金额在数据库里面做了严格限制或者现实情况不可能出现更大的金额 假设不超过1000块 那么我们可以 select max(id*1000+金额) -max(id*1000) from table; 这就...
GROUP BY 在聚集函数中遇到Null值的小问题解析
Null值属于任何类型,它和空字符不一样,空字符它是属于varchar2的数据类型,但是null可以是任何数据类型,因此在处理空值的时候特别要小心。示例:在oracle中的模版示例中有emp表,我们知道有一列deptno列,但是其中没有任何一个员工,因此对它进行group by 的时候,如果不加group by 的时候, 它会返回一行数据,但是如果加了结果就不是预想的那样了。来做一个演示: 统计d
mysql group by 涉及到的字段有空数据问题
统计数据需要按省份分组,这是大家经常遇到的问题。今天遇到一奇葩问题,由于省份(province)字段数据不规范, 有的是省份名称,有的是 "" (空)  有的是 "未知"。这时 group by province 时就会出现未知的一组  空数据的一组  当然 前台是不能显示空省份的  如果把空省份都循环赋值为未知的话  前台显示未知省份 显得也不是那么和谐。     解决办法:
数据库排名sql,group by 分组查询按照时间最大值
先给出类似的简单表 DROP TABLE IF EXISTS `TouTiaoAnchor`; CREATE TABLE `TouTiaoAnchor` ( `HourId` int(10) unsigned NOT NULL, `BetinTime` varchar(40) NOT NULL, `AnchorUid` int(11) unsigned NOT NULL, `ti
oracle select非group by的字段
可以把group by的结果集当作一个表,然后从这里表里取数就可以了。 e.g. SELECT A.PROJECT_CODE,A.DIE_NO,E.ONE_CONSUMING FROM (SELECT T.PROJECT_CODE, T.DIE_NO, SUM(T.OFFLINE_QTY) OFFQTY FROM DATA_PLAN T WHERE T.BEGIN_DATE A
oracle里面用group by后,想取其它字段的问题
最近帮朋友处理一批数据,将指定的列重复的数据拿出来。这些数据在excel里。有10W条左右。由于EXCEL不好操作。就想着将数据导入数据库通过SQL语句来操作。导入数据库成功了,但由于SQL不是很牛,所以查询有些问题。我用group by 把重复的拿掉,但还有个问题,大家都知道用group by的话,select 后面指定的字段必须与group by后面的一致。group by 只有个别字段,...