返回顶部
分享到

在SQL Server 2005所有表中搜索某个指定列的方法

数据库其他 来源:互联网 作者:佚名 发布时间:2022-08-26 20:56:31 人浏览
摘要

有时候我们只知道列的名字,但是不知道这列数据到底在哪个表里面,那么可以用下面的办法把含有这列数据的表查找出来。 Select O.name objectName, C.name ColumnName from sys.columns C inner join

有时候我们只知道列的名字,但是不知道这列数据到底在哪个表里面,那么可以用下面的办法把含有这列数据的表查找出来。

Select O.name objectName, C.name ColumnName from sys.columns C inner join sys.objects O ON C.object_id=O.object_id where C.name like '%ColumnName%'order by O.name, C.name

在你实际试用中,把ColumnName换成你要查的列的名字就可以了。

字符串在某字段里时,如何写搜索的SQL语句

问题描述:

经常遇到这种问题,我们搜索的条件是某字符串包含在某字段,如果是某字段包含在某字符串,我们知道可以用in,

如sql="select * form tb where tb.name in(" & names & " )”  

注释:name是表tb的字段,name是获得的字符串,该句查询字段name在给的字符串names里的所有集合)

这种方法自然不必多说,但我们通常遇到的问题是“反着来”,即  "name"字符串 在 tb.name表字段里,如,表tb的name字段值为:张三,李四,王五,赵六

而我们要查询的name=张三,这就要判断当表的name字段包含查询条件,也就是有“张三”时,即为符合查询

解决方法:

1、最先想到的当然是like查询(并非终极解决方案,终极方法继续往下看)

如sql="select * form tb where tb.name  like  '%" & 张三 & "%' ” 

解释一下,这个语句,能查询到所有表的name字段里有”张三“的集合,可是,假设有人的名字叫”秦张三八“,他的名字不管爹妈怎么取的,总之也有”张三“两个字,这样很显然也符合查询情况,那么他自然也会被查询出来,而我们只要”张三“,不要”秦张三八“,看下一步

2、试想一下,如果字段里的值不是“张三,李四,王五,赵六”,而是“,张三,李四,王五,赵六,”

发现什么了?

是的,字符串前后多了个逗号,这就有用了,因为逗号可以作为限制条件,如果“秦张三八”此时也在这个字段里,他的前后也有逗号,这样按逗号来控制查询,就精确到位了

好了,改写查询成:sql="select * form tb where tb.name  like  '%," & 张三 & ",%' ”

到此,原理和解决方法就已经全部说完了,但是,你可能还会遇到以下问题,继续看第三步。

3、有时类似这种带逗号的字段都是我们在保存的时候勾选了多选check得来的值,这时写入数据库的时候,会自动在不同的check值后加上逗号,

比如,请选择你的兴趣爱好,你可能会勾选“看书(value=1)”,“听歌(value=21)”,“爬山(value=13)”

此时得到的值就是xingquaihao="1, 21, 13",将这个字段保存,在数据库里也就是这种格式,但是此时如果直接按照上面的查询方式来查询的话,

直接用:sql="select * form tb where xingquaihao  like  '%" & 1 & "%' ”   将得到所有含1的,就算是21、13中的1,也会被查出来

将字段前后加上逗号,变成“,1, 21, 13,”的时候,如果我们查21或者13,改成:sql="select * form tb where xingquaihao  like  '%," & 21 & ",%' ” 结果是什么都查不出来

为什么明明有值,却查不出来呢?

因为自动勾选,然后保存的字段中间有空格,比如“1, 21, 13”,1的后面是一个逗号,逗号后面是一个空格,然后才是21

解决方法很简单了,在勾选完后,入库前把空格去掉,

xingquaihao="1, 21, 13"

xingquaihao=replace(xingquaihao," ","") '将空格删除

如此得到的就是紧凑型的值了,再按照上面的方法查询,搞定!


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 一文介绍在Hive中NULL的理解
    在 Hive 中,NULL 是一个特殊的值,表示未知或缺失。任何与NULL的比较操作(如=,,,=,=,)都会返回NULL,而不是TRUE或FALSE。 1.NULL 的比较规则 在
  • Navicat Premium 12数据库管理解决方案

    Navicat Premium 12数据库管理解决方案
    Navicat Premium 12是一款全面的数据库管理工具,支持多种数据库系统如MySQL、MariaDB、Oracle、SQL Server、PostgreSQL等。它提供了多数据库连接、数据
  • sqlite3命令行工具使用介绍
    一、启动与退出 启动数据库连接 1 2 3 sqlite3 [database_file] # 打开/创建数据库文件(如 test.db) sqlite3 # 启动临时内存数据库 (:memory:) sqlite3 :m
  • StarRocks简介与搭建使用介绍

    StarRocks简介与搭建使用介绍
    StarRocks简介 StarRocks 是一款高速、实时、全场景的MPP(大规模并行处理)分析型数据库系统,专为现代数据分析场景设计,强调亚秒级查询性
  • centos虚拟机部署opengauss数据库详细图文

    centos虚拟机部署opengauss数据库详细图文
    一、基本信息 1、虚拟机安装的centos版本 2、opengauss版本 地址:https://opengauss.org/zh/download/ 3、opengauss和gaussdb的区别 高斯数据库(GaussDB)是云
  • 达梦数据库文件故障的恢复方法

    达梦数据库文件故障的恢复方法
    1、概述 1.1 概述 本文介绍了达梦数据库文件损坏或误删除后的恢复方法。这里的数据库文件包括,表空间数据文件、重做日志文件、UNDO文件
  • Sql Server 2008 数据库附加错误:9004问题解决方案介
    【问题描述】 数据库文件存在异常状况,有可能是因为硬盘有坏区引起的。附加数据库的时候,提示错误9004。 【解决方法】 假设数据库名
  • Access数据中的SQL偏移注入原理解析介绍
    使用场景: 目标数据表的字段较多,无法一一获取的时候,尝试使用偏移注入的方式实现SQL注入。 原理: 例如:一个表有6个字段,而你想
  • Navicat导入Excel数据时数据被截断的问题分析与解

    Navicat导入Excel数据时数据被截断的问题分析与解
    在数据库的日常操作中,将Excel数据导入MySQL是常见的需求之一,特别是通过Navicat工具进行Excel数据导入时,可能会遇到数据截断的问题。具
  • GaussDB数据库事务管理及高级应用

    GaussDB数据库事务管理及高级应用
    事务管理是数据库系统中至关重要的一部分,它确保了数据库的一致性和可靠性。在GaussDB数据库中,事务管理不仅遵循传统的ACID特性,还提
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计