zoukankan      html  css  js  c++  java
  • 数据库中查找某个字段中特殊字符方法

    由于一些设计上的原因以及需求上的模糊导致在一些文件上传的功能上没有过滤上传文件的文件名中存在的特殊字符。

    然后就有了这个要一次性查找出所有文件名字记录表中文件名包含特殊字符的记录。

    1 SELECT * FROM dbo.table1 WHERE 
    2   
    3 (
    4 patindex('%[+%#@=&{},]%',FileName)>0 
    5  OR FileName like '%[%' 
    6  OR FileName like '%]%' 
    7 )

    这里使用到了一个sql的内置函数 patindex()

    语法格式:PATINDEX ( '%pattern%' , expression ) 

    返回pattern字符串在表达式expression里第一次出现的位置,起始值从1开始算。

    pattern字符串在expression表达式里没找就返回0,对所有有效的文本和字符串就是有效的数据类型。

    如:

    select patindex('%[d]%','rcrdsddddaadadffdr')

    返回4,[]中d在字符串rcrdsddddaadadffdr的第一次出现的位置。

    select patindex('%[cd]%','rcrdsdddrdaadadffdr')

    返回2,[]中c,d在其中一个的位置,返回最先出现的这个位置,c在此字符串里第一次出现位置是2,而d是4,结果取最先的那个。

    select patindex('%[sd]%','rcrdsdddrdaadadffdr')

    返回4,[]中c,d在其中一个的位置,返回最先出现的这个位置,s在此字符串里第一次出现位置是5,而d是4,结果取最先的那个。

    select patindex('%[^r]%','rrrdsdddrdaadadffdr')

    返回4,除[]中的字符串的匹配字符,第一次出现d不在[^r]里,所以就找到第一次这位。

    select patindex('%[^rd]%','rrrdsdddrdaadadffdr')

    返回5,除[]中的字符串的匹配字符,第一次出现s不在[^rd]里,所以就找到第一次这位。

    select patindex('%[^rsd]%','rrrdsdddrdaadadffdr')

    返回11,除[]中的字符串的匹配字符,第一次出现a不在[^rsd]里,所以就找到第一次这位。

    但是这里 不能用这个函数来查询包含"["和"]"

  • 相关阅读:
    个人项目作业
    自我介绍+软工五问
    Word Count
    个人简介+软工五问
    小学生算术题生成器
    个人项目-WC
    个人简历+软工五问
    学习有感
    学习爱我
    软件工程学习记录
  • 原文地址:https://www.cnblogs.com/moonbo/p/5436253.html
Copyright © 2011-2022 走看看