• 数据库中查找某个字段中特殊字符方法


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

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

    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]里,所以就找到第一次这位。

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

  • 相关阅读:
    openwrt的内核版本是在哪个文件中指定的?
    git如何将一个分支合并到另一个分支?
    cygwin如何下编译安装tmux?
    如何合并ts文件?
    在cygwin下创建的文件位于windows的哪个目录下?
    linux shell的for循环语法是怎样的?
    内部类访问局部变量时,为什么需要加final关键字
    Java8函数式编程的宏观总结
    Maven私服使用经验总结
    java关于Integer设置-128到127的静态缓存
  • 原文地址:https://www.cnblogs.com/moonbo/p/5436253.html
Copyright © 2020-2023  润新知