日期:2014-05-18  浏览次数:20564 次

sql查询内容带分隔符内容的字段。。。
首先说我的目的,有两表;
A表
id name pro
1 房屋类型 DB1@@4@@发布人@@@@个人,中介@@个人@@1$$$$DB2@@4@@房屋类型@@@@普通住房,地下室,公寓,别墅,其它@@普通住房@@1$$$$DB3@@4@@户型@@@@一室,两室,三室,四室,其它@@@@1$$$$DB4@@1@@所在层/楼层@@@@100@@0@@0$$$$DB5@@1@@面积@@平方米@@100@@1@@0$$$$DB6@@2@@装修程度@@@@简单装修,中等装修,精装修,豪华装修@@简单装修@@1$$$$DB7@@2@@朝向@@@@单面朝东,单面朝西,单面朝南,单面朝北,东

B表
id aid provalue
1 1 DB1@@中介$$$$DB2普通住房


a表是表示一个属性表,b表是信息表。。
其实就是想模拟一个可以让用户自定义属性的功能,如果后台点选了“房屋类型”这个选项,则此类表单会有它的属性。。
$$$$是个大分隔,@@是个小分隔,逗号是多选项的分隔。。。
现在就是想查询B表的信息,看B表的provalue的DB1那个值,是否等于a表的pro的DB1值。。。应该用like也可以做到,因为目前还没什么值相似的,但想做的真实一点。。
各位有什么办法?
或者我这个需求,数据库应该怎么样设计才会不这么复杂?


------解决方案--------------------
多加字段.或者分表.
------解决方案--------------------
把字段的功能单一化
------解决方案--------------------
这表看起来怎么这么别扭......
------解决方案--------------------
SQL code

declare @T table 
(id int,name varchar(8),pro varchar(10),provalue varchar(8))
insert into @T
select 1,'房屋类型','是否为中介','中介' union all
select 1,'房屋类型','房屋类型','普通住房'

select * from @T

------解决方案--------------------
帮顶,叶子的方法正解,没有必要做楼主那么复杂。如果有你所说的大分隔和小分隔的话加父项编码,多选,下拉这些样式也可以自己定义一个列,这应该是个树,存在表里了。