重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
mysql不固定字段使用动态增加数据库表字段。
成都创新互联专注于望江网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供望江营销型网站建设,望江网站制作、望江网页设计、望江网站官网定制、微信小程序服务,打造望江网络公司原创品牌,更为您提供望江网站排名全网营销落地服务。
mysql不固定字段有四种技术:
1.动态增加数据库表字段
2.预留足够的空白字段,运行时作动态映射
3.用xml格式保存在单字段里
4.改列为行,用另外一个表存放定制字段
动态增加字段的方法在实际操作时候几乎是不可能的(sqlserver太慢,oracle索性不支持)。
mysql的字段是不能再分的
不过对于你这样的要求,mysql还是有支持的机制的
字段值用英文逗号分隔,比如‘未分组,VIP会员,广东客'
查询时select * from `table_a` where id=20 and find_in_set('未分组', group_name);
因为是原生支持的做法,mysql会对其进行优化
1、将传递过来的值进行分割 用,分割成数组
例如:$var=explode(",",$str);
2、循环数组
3、在循环内查询sql
查询时候 有两种方法 按照sql语法或者PHP语法
sql 用 find_in_set(str1,str2);
php 用 strpos(str1,str2,start);
具体语法格式自己搜索一下吧。
这个sql语句是指从数据库表里面拼接组合goods_sn,goods_title,goods_brief,goods_name 有包含tablet字段的数据。等价于goods_sn||goods_title||goods_brief||goods_name LIKE '%tablet%。
concat 等同于字符串连接符 ||,concat(字串1, 字串2, 字串3, ...),将字串1、字串2、字串3,等字串连在一起。
扩展资料:
MySQL,Oracle,SQL Server拼接字符串查询示例:
例子1:
MySQL:
SELECT CONCAT(region_name,store_name) FROM Geography WHERE store_name = 'Boston';
例子2:
Oracle:
SELECT region_name || ' ' || store_name FROM Geography WHERE store_name = 'Boston';
例子3:
SQL Server:
SELECT region_name + ' ' + store_name FROM Geography WHERE store_name = 'Boston';
参考资料:MySQL字符串连接CONCAT()函数_W3Cschool
1,%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'
将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。
另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'
若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。
2,_: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;
再比如 SELECT * FROM [user] WHERE u_name LIKE '三__'; 只找出“三脚猫”这样name为三个字且第一个字是“三”的;
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create proc [dbo].[yyy] @str varchar(100)
as
declare @s varchar(8000)
declare tb cursor local for
select s='if exists(select 1 from ['+b.name+'] where convert(varchar,['+a.name+']) like ''%'+@str+'%'')
print ''select ['+a.name+'] from ['+b.name+']'''
from syscolumns a join sysobjects b on a.id=b.id
where b.xtype='U' and a.status=0 and a.xusertype in(175,239,231,167,56,60,108,106)
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
MS数据库的,MYSQL不熟悉,你可以试试能不能用。
exec yyy '字段的值‘
下面是执行结果