如何SQL查询字段值包含于字符串

如何SQL查询字段值包含于字符串,第1张

1、我们新建查询后,写上Select关键字。

2、紧接着我们输入字段名,显示全部字段的话可以用星号表示。

3、接下来我们输入From关键,紧接着表名。

4、表名后面立刻接着Where关键字。

5、Where后面的为我们的条件,可以写上任意合法的条件。

6、当我们整句语句写完后,我们就能执行查看我们的运行结果了。

select filename from oa_file where filename not like '%[!-¥]%'

或者这个:

select filename from oa_file where filename not like '%[!-?]%'

出现的问题就是问号和问好也是不一样的,比如说英文标点半角的问号是“?”,英文标点全角的问号是“?”但是中文半角问号是“?”中文全角的问号是“?”

这些都是不一样的,你搜出来的都是带有英文半角问号的文件。

扩展资料:

SQL中的字段“包含”与“包含于”字符串的写法

1、查询表中某字段值“包含”某字符串的所有记录的方法

假如表中有一个name字段,查询name包含“张三”的所有记录,可以这样写sql:

Stirng strsql="SELECT * FROM 表名 WHERE name LIKE ’%"+"张三"+"%’"

2、查询某字段值“包含于”某个字符串的所有记录的方法

如果查询表中name字段包含于字符串“张三是个好学生”的所有记录,可以这样写sql:

String strsql="SELECT * FROM 表名 WHERE INSTR(’张三是个好学生’,name)>0"

即可查询,记录中的name字段值中包括:张、三、是、个、好、学、生、张三、......等所有记录。

注:以上sql字符串中请将全角符号改为半角符号。

CREATE PROCEDURE [dbo].[findStringFromSys]

-- Add the parameters for the stored procedure

@StringName varchar(255)

AS

BEGIN

--1.定义需要查找的关键字。在搜索中,使用模糊搜索:LIKE '%@key_find%'

DECLARE @key_find NVARCHAR(MAX) = @StringName--假设是找字符串"123"

--2.用游标Cursor_Table,遍历所有表

DECLARE Cursor_Table CURSOR FOR

SELECT name from sysobjects WHERE xtype = 'u' AND name <>'dtproperties'

OPEN Cursor_Table

DECLARE @tableName NVARCHAR(MAX)

FETCH NEXT from Cursor_Table INTO @tableName

WHILE @@fetch_status = 0

BEGIN

DECLARE @tempSQLText NVARCHAR(MAX) = ''

--3.在表中,用游标columnCursor,遍历所有字段。注意,只遍历字符串类型的字段(列)

DECLARE columnCursor CURSOR FOR

SELECT Name FROM SysColumns WHERE ID = Object_Id( @tableName ) and

(

xtype = 35 or --text

xtype = 99 or --ntext

xtype = 167 or --varchar

xtype = 175 or --char

xtype = 231 or --nvarchar

xtype = 239 or --nchar

xtype = 241 --xml

)

OPEN columnCursor

DECLARE @columnName NVARCHAR(MAX)

FETCH NEXT from columnCursor INTO @columnName

WHILE @@fetch_status = 0

BEGIN

--4.在表的字段中,对每一行进行模糊搜索,并输出找到的信息。

DECLARE @DynamicSQLText NVARCHAR(MAX) = 'IF ( EXISTS ( SELECT * FROM [' + @tableName + '] WHERE [' + @columnName + '] LIKE ''%' + @key_find + '%'' ) ) BEGIN DECLARE @CurrentTableCount Bigint = ( SELECT COUNT(*) From [' + @tableName + '] )PRINT ''Find : Table [' + @tableName + '], Column [' + @columnName + '], Row Count:'' + CAST( @CurrentTableCount AS NVARCHAR(MAX) ) + ''.'' END'

EXEC( @DynamicSQLText )

FETCH NEXT from columnCursor INTO @columnName

END

exec(@tempSQLText)

CLOSE columnCursor

DEALLOCATE columnCursor

FETCH NEXT from Cursor_Table INTO @tableName

END

CLOSE Cursor_Table

DEALLOCATE Cursor_Table

END

GO


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9599018.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存