zoukankan      html  css  js  c++  java
  • SQL多条件模糊查询、IN 、自定义函数笔记(一)

    在工作中遇到的一些关于Sql查询的问题整理记录,实现环境 SQLService 2014

    一、对同一个字段,多个关键词的查询几种实现方式

    基本语法:

    SELECT column_name(s)
    FROM table_name
    WHERE column_name LIKE pattern

    案例表(TbUser):

    IdLastNameFirstName
    1 Adams John
    2 Bush George
    3 Carter Thomas

     

    查询语句实现:

    1、单个关键词模糊查询

            SELECT * FROM TbUser WHERE  LastName LIKE '%d%'   

    2、多个关键词查询

            实现一:SELECT * 

    FROM TbUser

    WHERE LastName like '%d%'   or   LastName LIKE '%e%'   or   LastName LIKE '%d%'  

     

    实现二:SELECT TbUser.LastName,temp.m

    FROMTbUser,(values('%a%'),('%b%'),('%c%')) as temp(m)

    FROM TbUser.LastName LIKE temp.m

     

    实现三: SELECT LastName 

    FROM TbUser 

    WHERE LastName LIKE any(array['%a%','%b%','%e%'])

     

    实现四:SELECT LastName  

    FROM TbUser  

    WHERE LastName LIKE  '%[a|b|e]%’

     

    二、sql中In关键词的变相实现

    当匹配数据数据比较多的时候,In需要逐一比对,效率低下,构造LEFT JOIN 结构会比较大的提高效率。

    语法:

    SELECT column_name(s)
    FROM table_name
    WHERE column_name IN (value1,value2,...)

     实现一:

    SELECT *

    FROM TbUser

    WHERE Id in (1,2,3,4)

     

    实现二、 

    SELECT  x FROM TbUser  u

    LEFT JOIN  TbDetails as d on u.Id=d.FkUserId

     WHERE d.FkUserId is not null

    实现三:

    如果又一个数组需要进行In查询,可以如下实现,构造临时表进行Inner join 查询

    SELECT u.*

    FROM bUser  u

    INNER JOIN ( VALUES('a'),('b'),('c'),('d'),('e') ) as  temp(m) ON u.LastName=temp.m

     

     

     

  • 相关阅读:
    rabbitmq 公平分发和消息接收确认(转载)
    rabbitmq 配置多个消费者(转载)
    Spring整合rabbitmq(转载)
    rabbitmq 一些属性
    rabbitmq 持久化 事务 发送确认模式
    TCP中的长连接和短连接(转载)
    rabbitmq 概念
    ZooKeeper介绍(转载)
    npm install 安装依赖报错解决
    ubuntu下安装node.js教程
  • 原文地址:https://www.cnblogs.com/wfmv/p/12566541.html
Copyright © 2011-2022 走看看