sql查询字段存在
㈠ sql语句,怎样判断一个字段中是否存在某一个值
可以参考下面的描述:
INSTR(C1,C2,I,J)
在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索的开始位置,默认为1
J 出现的位置,默认为1
SQL> select instr(’oracle traning’,’ra’,1,2) instring from al;
INSTRING
---------
9
(1)sql查询字段存在扩展阅读:
基本语句
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
㈡ sql语句查询出现错误:unknown column,但是语句字段确实存在。很多语句都有这个错误
是多表查询,其中两个以上的表有同名的字段,在语句中没指明哪个表。
所以是unknowncolumn,SQL不知道是哪个表的字段。
在检查SQL语句完全无误后,可以检查下表中的数据类型设置或者字符编码格式,比如在出现这个错误时,常常因为数据库使用的是gbk格式,但是字段是utf8编码格式的,表中字段编码格式不同,导致了这个错误。
(2)sql查询字段存在扩展阅读:
SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL。而SQL注入是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令。
如Web应用程序的开发人员对用户所输入的数据或cookie等内容不进行过滤或验证(即存在注入点)就直接传输给数据库,就可能导致拼接的SQL被执行,获取对数据库的信息以及提权,发生SQL注入攻击。
㈢ sql查看一张表中某个字段是否存在怎么写啊
select * from user_tab_columns t where t.table_name=表名 and t.column_name =字段;
字段和表名都是大写哦
㈣ 用sql语句查找一个字段值存在于哪张表,该怎么写SQL语句
这需要用存储过程来实现,基本方法如下,比如查找全库中所有字段值为“张三”的属于哪张表,可用如下方法:
declare@cloumnsvarchar(40)
declare@tablenamevarchar(40)
declare@strvarchar(40)
declare@countsint
declare@sqlnvarchar(2000)
declareMyCursorCursorFor
Selecta.nameasColumns,b.,sysobjectsb,systypesc
wherea.id=b.id
andb.type='U'
anda.xtype=c.xtype
andc.namelike'%char%'
set@str='张三'
OpenMyCursor
FetchnextFromMyCursorInto@cloumns,@tablename
While(@@Fetch_Status=0)
Begin
set@sql='select@tmp_counts=count(*)from'+@tablename+'where'+@cloumns+'='''+@str+''''
executesp_executesql@sql,N'@tmp_countsintout',@countsout
if@counts>0
begin
print'表名为:'+@tablename+',字段名为'+@cloumns
end
FetchnextFromMyCursorInto@cloumns,@tablename
End
CloseMyCursor
DeallocateMyCursor
结果如图:
显示的就是含有张三这个内容的表名及字段名
㈤ SQL中如何根据字段名查找该字段名存在于数据库的哪些表中
上处的字段名是指的表中的列名 还是指的 列中某一个 值。
如果是指的列名的话,很简单
select sysobjects.name as tablename,syscolumns.name as columnname
from syscolumns join sysobjects on sysobjects.id = syscolumns.id
where syscolumns.name like '%此处为列名%'
如果是指的一个值的话,要遍历数据库了。如下:
declare@str varchar(100)
set@str='张三'--要搜索的字符串
declare@s varchar(8000)
declaretb cursorlocalfor
selects='if exists(select 1 from ['+b.name+'] where convert(varchar,['+a.name+']) like ''%'+@str+'%'')
print ''select ['+a.name+'] from ['+b.name+']'''
fromsyscolumns a joinsysobjects b ona.id=b.id
whereb.xtype='U'anda.status>=0
--所查列的字段类型
anda.xusertype in(175,239,231,167,56,60,108,106)
opentb
fetchnextfromtb into@s
while @@fetch_status=0
begin
exec(@s)
fetchnextfromtb into@s
end
closetb
deallocatetb
㈥ 急急急,Sql查询一个字段是否存在某一个值,怎么写查询语句
不知道是什么数据库..
oracle数据库sql语句如下:
select * from 表名 where instr(fuclass,'你要传入的参数')>0;
其实这样也有问题,你这题的思路应该是先根据逗号分隔符截取字符串,然后根据你传入的参数和根据逗号截取出来的字符串进行比较,如果存在那就是你要的记录,否则就不是,但是oracle并不存在这样一种函数.比如gp中使用的split_part函数,所以比较麻烦,只能自己构建一个函数,然后调用这个函数先对字符串进行处理
出问题的原因是如果你传入一个'2',那么'22'也会算作是合格字符,而将结果返回
㈦ sql查询字符串字段是否存在传进来字符串中的一个值
显示表中字段的值包含在字符串中的记录:
select
*
from
表
where
字符串
like
'%'+字段+'%'
参考where后面的判断条件
㈧ sql判断字段是否存在
--判断table1中是否存在name字段
if exists(select * from syscolumns where id=object_id('table1') and name='name') begin
print '存在'
end
else
begin
print '不存在'
end