`

一个字段匹配的sql语句书写

阅读更多

     新的一年开始了,首先向大家拜个年,祝大家过年好!

     这几天负责一个家教门户网站的开发,基于cakephp框架。在培训机构表(schools)中存在一个字段subject用来存储另一个数据表 (subjects)中记录的id值,且存储形式为:'1,2,3,4,5'。但是在应用高级搜索过滤时页面select选项option的传值为 subjects的id值,需要判断查询表schools中subject字段存在此id,即查询显示此记录。

     先后尝试了以下几种方式:

     **在此假设id传值为3**

     1. SELECT * FROM schools WHERE subject like '%3%';会出现查询出存在'1,2,3','1,13,33'的记录,不合逻辑.

     2. SELECT * FROM schools WHERE subject in (3);会出现查询出 '3',而不会查询出存在 '1,3','1,2,3' 的记录,不合逻辑
     3. SELECT * FORM schools WHERE  find_in_set('3',  subject); 可以很好的解决了以上问题。

     为了更深入的了解一下find_in_set()函数,mysql手册中对此解释如下:

FIND_IN_SET(str,strlist)
假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则   FIND_IN_SET() 函数被优化,使用比特计算。如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。 这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。



 

0
0
分享到:
评论

相关推荐

    sql语句规范

    SQL 语句规范是数据库性能优化的重要一环,以下是 SQL 语句书写和建表规范的相关知识点: 1. Select 语句规范 * 避免使用通配符,选择需要的列而不是所有列 * 在可能的情况下,限制结果集的行数,以减少网络负担 *...

    mybatis动态插入sql语句的编写(csdn)————程序.pdf

    在例子中,它添加了 `'('`,表示在插入语句的字段列表前添加一个左括号,这是为了构建形如 `(field1, field2, ...)` 的结构。 2. **`<trim>` 标签的 `suffix` 属性**: `suffix` 属性则用于在SQL语句后添加内容。...

    ORACLE SQL 语句(典型应用总结).pdf

    - **关键字与标识符**:Oracle SQL中的关键字应全部使用大写字母书写,而表名、字段名等标识符则应使用小写字母或与数据库约定的格式一致。 #### 2. DISTINCT `DISTINCT`关键字用于去除查询结果中的重复记录,例如...

    SQL语句优化技术分析

    SQL语句的书写方式,包括是否指定表的所有者、大小写敏感性以及空格使用,对查询性能无直接影响,但在Oracle的共享内存区(SGA)管理中,相同的SQL语句将只被解析一次,减少了解析时间和内存重复。这意味着保持SQL语句...

    sql书写优化和性能优化

    当SQL语句中涉及多表连接时,建议为每个表指定一个简短的别名,并在引用字段时带上相应的表别名。例如:`SELECT a.col1, a.col2, b.col3 FROM table_a a, table_b b WHERE a.col4 = b.col5`。这样做的好处是可以减少...

    SQL Server数据库性能优化之SQL语句篇

    - 使用`EXISTS`操作符时,子查询只会在找到第一个匹配项后停止,从而提高效率。 - **示例**: - 使用`IN`: ```sql SELECT a.id FROM tblA a WHERE a.id IN (SELECT b.id FROM tblB b) ``` - 使用`EXISTS`: ...

    书写高质量SQL的30条建议,如何写出高性能的SQL语句

    书写高质量、高性能的SQL语句对于数据库的效率至关重要。以下是一些关键的建议,可以帮助你提升SQL编写技巧,优化查询性能: 1. **了解你的数据**:在编写SQL之前,深入理解表结构、字段类型以及数据分布是基础。这...

    ASP下实现多条件模糊查询SQL语句.pdf

    首先,让我们了解一个基本的模糊查询SQL语句的结构。在SQL中,我们可以使用`LIKE`关键字配合通配符 `%` 或 `_` 来进行模糊匹配。`%` 代表零个或多个任意字符,`_` 代表单个任意字符。例如,如果我们要查询一个表中...

    SEIECT—SQL语句中Where子句功能解析与应用.pdf

    这里BETWEEN是一个范围运算符,用于简化两个条件AND的书写。 3. Where FieldName [NOT] Like Expression:这种方式用于模糊匹配字符串字段。使用通配符'%'表示任意长度的任意字符,'_'表示任意单个字符。例如,...

    书写高质量SQL的30条建议,如何写出高性能的SQL语句源码.zip

    写出高质量、高性能的SQL语句对于数据库的效率至关重要。以下是一些关键的建议,可以帮助你提升SQL编写技巧,优化数据库性能: 1. **了解索引**:索引可以显著提高查询速度。了解何时为表的哪些字段创建索引,以及...

    sql语句优化

    SQL语句优化是数据库性能...总的来说,SQL语句优化是一个多方面的工作,需要结合数据库设计、索引策略、查询结构和SQL编写技巧等多个因素综合考虑。理解并掌握这些优化方法,能够显著提升数据库系统的性能和响应速度。

    OracleSql脚本书写规范

    Oracle SQL脚本书写规范是确保代码可读性、性能优化以及团队协作的重要准则。遵循这些规范可以帮助初学者更好地理解和编写高效的SQL查询,避免不必要的错误,提高开发效率。以下是一些关键的Oracle SQL书写规范: *...

    LINQ to SQL语句(15)之String

    LINQ(Language Integrated Query,语言集成查询)是.NET框架中的一个强大工具,它允许开发者在编程语言中直接书写查询,无需离开代码环境去编写SQL语句。在这个主题中,我们将重点关注LINQ与SQL语句交互时对字符串...

    92 深入探索多表关联的SQL语句到底是如何执行的?(2).pdf

    多表关联是数据库查询中的一个重要概念,它允许我们联合两个或者多个数据表,并基于某些共同的字段来检索数据。SQL中实现多表关联的基本方法包括内连接(INNER JOIN)和外连接(OUTER JOIN),而外连接又分为左外...

    ORACLE高效SQL书写规范

    为了提高SQL语句的可读性和执行效率,建议使用统一的大写或小写来书写SQL语句,并且避免不必要的空格。在ORACLE中,表名、字段名等数据库对象名应统一使用小写,而SQL关键词如`SELECT`, `FROM`, `WHERE`等则使用大写...

    在ASP中如何正确书写SQL字符串.rar

    使用预编译的SQL语句(如存储过程)能提高执行效率,因为数据库只需解析一次,后续调用时无需再次解析。同时,存储过程也可以提供额外的安全性,因为它不允许直接的SQL注入。 3. **字符串连接与拼接**: 避免直接...

    SQL培训课件

    - **多行书写**: SQL语句可以跨多行书写,以增强可读性。 - **关键字完整性**: 关键字不应被缩写,也不应跨越多行。 - **缩进与格式化**: 使用缩进和空格来改善SQL语句的可读性。 **1.2 基本SQL语句范例** - 示例:...

    ORACLE SQL语句优化技术要点解析

    总的来说,Oracle SQL语句优化涉及面广,包括操作符选择、语句书写规范、索引设计等多个方面。理解这些要点,结合具体业务场景,可以有效提升数据库系统的执行效率,降低数据库的负载,保障系统的稳定性和响应速度。

Global site tag (gtag.js) - Google Analytics