DEDE这样字段如何SQL查询?

fxs_2008 2009-06-05 10:48:03
一个字段,存多个信息

比如dede中的文章的flag字段,存“a,b,c,d,e,f”字串信息多个信处,表示图片,推荐,重点等

查询时如何处理呢?

比如,我想查询含b的记录?

再如,我想查询同时含c,d,e的记录?


...全文
320 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxs_2008 2009-06-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xuzuning 的回复:]
手边没有 mysql 环境,只好贴手册了

对于包含超过一个 SET 成员的值,当你插入值时,无所谓以什么顺序列出成员。也无所谓给出的值被列举了多少次。当以后检索该值时,在值中的每个成员将出现一次,根据他们在表创建时所指定的顺序列出成员。例如,如果一个列被定义为 SET("a","b","c","d"),那么,"a,d"、"d,a" 和 "d,a,a,d,d" 在被检索时均将被视为 "a,d"。

如果将一个不支持的值赋于一个 SET 列,该值将被忽略。

SET …
[/Quote]

老大,能详解一下面三个吗?

mysql> SELECT * FROM tbl_name WHERE FIND_IN_SET('value',set_col)>0;//什么意思

mysql> SELECT * FROM tbl_name WHERE set_col = 'val1,val2'; //这个是枚?有顺序要求吗?

mysql> SELECT * FROM tbl_name WHERE set_col & 1; //什么意思
renqiang_888 2009-06-06
  • 打赏
  • 举报
回复
按照你set类型字符的顺序
renqiang_888 2009-06-06
  • 打赏
  • 举报
回复
按照你set类型字符的顺序
renqiang_888 2009-06-06
  • 打赏
  • 举报
回复
按照你set类型字符的顺序
foolbirdflyfirst 2009-06-05
  • 打赏
  • 举报
回复
保证顺序。
SELECT flag from t where flag like "%c%d%e" ;
海诗美妆 2009-06-05
  • 打赏
  • 举报
回复
直接查询标签例如、[d]

但是,如果想要查询整个标签内容例如[b]...
就比较复杂了,单纯用mysql应该很难实现。
总哈哈 2009-06-05
  • 打赏
  • 举报
回复
模乎查询几次就可以了嘛!like '%a,%' and linke '%b,%'我是这么想的,不知道有没有更好的方法!
xuzuning 2009-06-05
  • 打赏
  • 举报
回复
手边没有 mysql 环境,只好贴手册了

对于包含超过一个 SET 成员的值,当你插入值时,无所谓以什么顺序列出成员。也无所谓给出的值被列举了多少次。当以后检索该值时,在值中的每个成员将出现一次,根据他们在表创建时所指定的顺序列出成员。例如,如果一个列被定义为 SET("a","b","c","d"),那么,"a,d"、"d,a" 和 "d,a,a,d,d" 在被检索时均将被视为 "a,d"。

如果将一个不支持的值赋于一个 SET 列,该值将被忽略。

SET 以数字顺序排序。NULL 值排在非 NULL SET 值之前。

通常,可以使用 LIKE 操作符或 FIND_IN_SET() 函数执行在一个 SET 列上的 SELECT:

mysql> SELECT * FROM tbl_name WHERE set_col LIKE '%value%';
mysql> SELECT * FROM tbl_name WHERE FIND_IN_SET('value',set_col)>0;

但是,下列示例也可以工作:

mysql> SELECT * FROM tbl_name WHERE set_col = 'val1,val2';
mysql> SELECT * FROM tbl_name WHERE set_col & 1;

第一个语句寻找一个精确的匹配。第二个语句寻找包含第一个集合成员的值。

如果希望得到一个 SET 列的所有可能值,可以使用 SHOW COLUMNS FROM table_name LIKE set_column_name 并分析第二列的 SET 定义。

dhgdmw 2009-06-05
  • 打赏
  • 举报
回复
MARK
pangniu84 2009-06-05
  • 打赏
  • 举报
回复
用 这个吧,可以试试看吧
SELECT * from dede where FIND_IN_SET('b',flag);
fxs_2008 2009-06-05
  • 打赏
  • 举报
回复
自定义属性: 头条[h]推荐[c]图片[p]幻灯[f]滚动[s]跳转[j]图文[a]加粗[b]
发贴时是复选框,可以多选
fxs_2008 2009-06-05
  • 打赏
  • 举报
回复
后台数据类型为
set('c', 'h', 'p', 'f', 's', 'j', 'a', 'b')
fxs_2008 2009-06-05
  • 打赏
  • 举报
回复
mysql
xuzuning 2009-06-05
  • 打赏
  • 举报
回复
你使用的是什么数据库?


foolbirdflyfirst 2009-06-05
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 fxs_2008 的回复:]
引用 11 楼 foolbirdflyfirst 的回复:
保证顺序。
SELECT flag from t where flag like "%c%d%e" ;


这个排序是不是不能混乱?
[/Quote]
对,按照你set类型字符的顺序。
fxs_2008 2009-06-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 ruanchao 的回复:]
楼主,是在研究dedecms么?
[/Quote]

是的,有个项目想整合DEDE

DEDE在标志一个文章是头条,重点,推荐,图片等属性是用一个字段表示的,我看是枚举型

这个字段可以存多个枚举值,查询时,也查这个字段

比如:我想查既是推荐,又有图片,又是重点的文件,要从这个字段按条件检索!

海诗美妆 2009-06-05
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 fxs_2008 的回复:]
引用 11 楼 foolbirdflyfirst 的回复:
保证顺序。
SELECT flag from t where flag like "%c%d%e" ;


这个排序是不是不能混乱?
[/Quote]

不太明白lz的具体需求。
ruanchao 2009-06-05
  • 打赏
  • 举报
回复
楼主,是在研究dedecms么?
fxs_2008 2009-06-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 foolbirdflyfirst 的回复:]
保证顺序。
SELECT flag from t where flag like "%c%d%e" ;
[/Quote]

这个排序是不是不能混乱?

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧