如何筛选SQL字符串字段中部分值

如何筛选SQL字符串字段中部分值,第1张

一、先说筛选字符串字段中部分值的记录。
例如我有一个KKBH(卡口编号)字段,这是一个字典字段(对应另一个实体表(卡口表)的编号字段)。这个字段的值保存所属卡口值域{01,02,03}
本来想到的是通过or来实现,这样需要动态生成SQL语句。
后来想到一个办法用charindex搜索字符串的办法。将所有的要查的卡口编号组成类似'01@02'这样待查字符串。sql查询时通过charindex筛选出在待查字符串里有的KKBH的记录。
经测试使用or与使用charindex,两者在MSSQL中执行效率差不多。
具体实现:
用户界面查询需求:可能搜索N个卡口的记录(N的值域{1,所有卡口个数})。设计这个UI的形式一共三种:
一、一个多选listbox。用户界面运行时将卡口字典表载入listbox信息。
二、两个listbox,左边为待选,右边为已选,中间加两个按钮添加与删除。用户界面运行时将卡都字典表载入左边的listbox。
三、多个Checkbox。可以在界面设计阶段直接做死字典表,即有几个卡口就话几个checkbox。或者在程序运行根据字典表绘制动态绘制checkbox。
UI的优缺点这里不讨论,我这里选择第三种方式的动态绘制。
在查询阶段根据所选卡口生成待选字符串入:"01@02”
并将此条件传回后台查询服务程序
后台查询服务里只要待查字符串作为参数传入查询的SQL语句中(sql片段): charindex(卡口编号,@待查字符串)。当然也可以手动生成SQL方式传入"charindex(卡口编号,'"+待查字符串+"')"
二、模糊查询。
使用like的模糊查询发生效率是很低。
提高的解决办法与:
一、用full text index 结合contains函数。全文本索引,带了空间占用率很高。
二、通过charindex+substring实现简易模糊查询。使用substring分段,charindex实现类似like '%关键字%'。

excel数据透视表中报表筛选的意思就是根据用户的要求将满足条件的数据通过筛选记录下来,行标签的指的是整个一行的字段,列标签是指每竖排的字段,而数值的意思就是每一个单元格的内容。

扩展资料

应用:

在Access中可以用“数据透视表向导”来创建数据透视表。这种向导用Excel创建数据透视表,再用Microsoft Access创建内嵌数据透视表的窗体。

报表概述

处理源数据:

在创建数据透视表 (数据透视表:一种交互的、交叉制表的 Excel 报表,用于对多种来源(包括 Excel 的外部数据)的数据(如数据库记录)进行汇总和分析)或数据透视图报表 (数据透视图:提供交互式数据分析的图表,与数据透视表类似。

可以更改数据的视图,查看不同级别的明细数据,或通过拖动字段和显示或隐藏字段中的项来重新组织图表的布局)时,可使用多种不同的源数据 (源数据:用于创建数据透视表或数据透视图的数据清单或表。

源数据可以来自 Excel 数据清单或区域、外部数据库或多维数据集,或者另一张数据透视表。)类型。

工作表数据:

您可以将 Microsoft Office Excel 工作表中的数据作为报表的数据来源。该数据应采用列表 。

格式,其列标签应位于第一行。后续行中的每个单元格都应包含与其列标题相对应的数据。目标数据中不得出现任何空行或空列。

Excel 会将列标签用作报表中的字段 (字段:在数据透视表或数据透视图中,来源于源数据中字段的一类数据。数据透视表具有行字段、列字段、页字段和数据字段。数据透视图具有系列字段、分类字段、页字段和数据字段)名称。

使用命名区域:

若要使报表的更新更易于进行,请为源区域命名一个名称 (名称:代表单元格、单元格区域、公式或常量值的单词或字符串。名称更易于理解,例如,“产品”可以引用难于理解的区域“Sales!C20:C30”),并在创建报表时使用该名称。

如果命名区域在扩展后包含了更多数据,则可以刷新 (刷新:更新数据透视表或数据透视图中的内容以反映基本源数据的变化。如果报表基于外部数据,则刷新将运行基本查询以检索新的或更改过的数据)报表来包含新的数据。

Excel 表格:

Excel 表格已经采用列表格式,因而是数据透视表不错的候选源数据。当刷新数据透视表时,Excel 表格中新增和更新的数据会自动包含在刷新 *** 作中。

包括汇总Excel 会自动在数据透视表中创建分类汇总和总计。如果源数据包含用“分类汇总”命令(位于“数据”选项卡上的“大纲”组中)创建的自动分类汇总和总计,则应在创建报表前再用该命令将分类汇总和总计删除。

外部数据源:

您可以从数据库、OLAP 多维数据集或文本文件等位于 Excel 外部的源中检索数据。例如,对于要汇总和分析的销售记录,可以为它们维护一个数据库。

Office 数据连接文件如果使用 Office 数据连接 (ODC) 文件 (odc) 为报表检索外部数据,则可以直接将该数据输入到数据透视表中。我们建议使用 ODC 文件为报表检索外部数据。

非 OLAP 源数据这是数据透视表或数据透视图报表使用的基础数据,该数据来自 OLAP 数据库之外的源。例如,来自关系数据库或文本文件中的数据。

参考资料来自:百度百科-数据透视表

你不要眉毛胡子一把抓,日期类型、数字类型、字符类型的条件在SQL里面是有严格区分的,在ACCESS又有很大的出入,在VB SQL、VB ACCESS效果又不一样。
如在VB SQL里面可以使用IIF函数,在其他开发环境是不能使用IIF函数的,ACCESS本来就是VBA的翻版,所以他也支持IIF函数。VB方法对日期格式的引用是#日期#,SQL方法是直接使用,但是格式要对应,SQL要用Convert函数去转换一下格式。所以楼主你要熟悉这些用法。比如你说的要把年月作为字符来筛选,那就这样做
strsql = "select from shuju where CStr(Year(年))+CStr(Month(日期字段))+CStr(Day(日期字段))= '"+Trim(Combo1Text)+Trim(Combo2Text)+
+ Trim(Combo3Text)+'"
在Combo1、2、3里放年、月、日数值,Combo1Text格式就是String,ACCESS里面Cstr()意思是去空格。你的写法不是把Combo3做条件参数,是把他做成表名了

加上反斜杠,就是对 ' 或者 " 的,可以用 \' 和 \'' 替换 \"\'12><>》;

一般如果是在php程序上进行插入数据库的话,可以先做个处理

$str=' "'12><>》; ';
if(!get_magic_quotes_gpc()){
$str=addslashes($str);
//addslashes这个函数会对字符串进行处理,即对 ' 或者 " 的,用 \' 和 \'' 替换

}


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

原文地址: http://outofmemory.cn/yw/13342605.html

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

发表评论

登录后才能评论

评论列表(0条)

保存