精华内容
下载资源
问答
  • 主要和大家一起分享的是SQL Server 2005导入到SQL Server 2000的正确操作步骤,下面就是文章的主要内容描述
  • 错误描述 在 respository中声明如下BoyRespository接口函数,执行不能够返回结果。 @Query(value = "select distinct city from plot_spider where province='广东省'", nativeQuery = true) public List<...

    错误描述

    在 respository中声明如下BoyRespository接口函数,执行不能够返回结果。

       @Query(value = "select distinct city from plot_spider where province='广东省'", nativeQuery = true)
        public List<Object> findDistinctCity(String province);
    

    但是,同在BoyRespository接口中.

    @Query(value = “select * from boy”,nativeQuery = true)
    public List getAllBoy();

    @Query("select b from Boy b where b.username = ?1")
    public List<Object> get_by_username(String username);
    
    Boy findByUsername(String username);
    
    
    public List<Object> findAllByUsername(String username);
    

    数据库application.yml原来的配置如下。然后我改成了自己本地的。

    spring:
      profiles:
        active: prod
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
    #    url: jdbc:mysql://192.168.97.215:3306/kdwcomp?useSSL=false
    #    username: comp
    #    password: comp123!@#
        url: jdbc:mysql://localhost:3306/kdwcomp?useSSL=false
        username: root
        password: 123456
      jpa:
        hibernate:
          ddl-auto: update
        show-sql: true
    

    问题推断

    问题就是这么神奇。。以nativeQuery的方式进行带参数查询(可能别的非nativeQuery方式查询也是这样)就是为空。或者说,输入类似于province="广东省"这样的条件就会导致数据为空。而我在别的接口方法中测试,也有条件查询,但是条件查询一般是英文的,就是比如username=“zhangsan”,好像问题比较明了了。就是字符编码的问题!!

    问题解决

    然后就修改指定字符编码进行连接数据库。

        url: jdbc:mysql://localhost:3306/kdwcomp?useUnicode=true&characterEncoding=utf-8&useSSL=false
    

    问题得以解决。。

    另外 说明一下,项目本来的远程数据库是5.7的,而我本地的是5.6的,用5.7的没有这种问题。

    展开全文
  • SQL Server中NULL的正确使用与空间占用

    千次阅读 2016-01-24 19:20:34
    正确查询使用SQL Server中的NULL NULL的空间占用 参考资料认识SQL Server中的NULL我们常在SQL Server的使用或维护中遇上NULL,那么什么是NULL?如下是MSDN给出的一段简短描述(见“Null Values”): A value of ...

    目录

    认识SQL Server中的NULL

    我们常在SQL Server的使用或维护中遇上NULL,那么什么是NULL?如下是MSDN给出的一段简短描述(见“Null Values”):

    A value of NULL indicates that the value is unknown. A value of NULL is different from an empty or zero value. No two null values are equal. Comparisons between two null values, or between a NULL and any other value, return unknown because the value of each NULL is unknown.

    通俗的讲,NULL就是一个值,而且这个值是未知的(unknown);NULL不能等价任何值,甚至都不等价它自己,即NULL不等于NULL。

    为了清晰的理解上述的内容,我们创建一个测试表Test_NULL,然后对表插入2条含有NULL值的记录,并进行相关验证操作:

    --创建一张允许NULL值的表
    CREATE TABLE Test_NULL (
        num INT NOT NULL PRIMARY KEY
        ,fname NVARCHAR(50) NULL
        ,lname NVARCHAR(50) NULL
    )
    
    --对表插入4条数据:最后2条记录含有NULLINSERT INTO Test_NULL (num,fname,lname) VALUES(1, 'Tom','Jane')
    INSERT INTO Test_NULL (num,fname,lname) VALUES(2, 'Dave','')
    INSERT INTO Test_NULL (num,fname) VALUES(3, 'Aaron')
    INSERT INTO Test_NULL (num,fname) VALUES(4, 'Betty')

    为了验证NULL值是未知的,我们通过如下SQL查询表Test_NULL的记录,对lname字段进行=操作:

    --若两个NULL是可以相等的,那么将输出4条记录。实际只输出2条记录
    SELECT
        *
    FROM Test_NULL tn 
    LEFT JOIN Test_NULL g
        ON tn.num = g.num
    WHERE tn.lname = g.lname
    ------------------------------------------
    1   Tom Jane    1   Tom Jane
    2   Dave        2   Dave    
    
    --查询lname为''的记录,即验证NULL不等于''
    SELECT
        *
    FROM Test_NULL tn
    WHERE tn.lname = ''
    ------------------------------------------
    2   Dave    

    正确查询/使用SQL Server中的NULL

    由于NULL是未知的,因此在SQL Server默认情况下我们不能使用=或<>去判断或查询一条NULL的记录(见上述),正确的方式是:使用IS NULL或IS NOT NULL去查询或过滤一条含有NULL的记录。

    另外有函数ISNULL(),可判断并转换NULL为其他值。

    --通过IS NULL查询含有NULL的记录
    SELECT
        *
    FROM Test_NULL tn
    WHERE tn.lname IS NULL
    ------------------------------------------
    3   Aaron   NULL
    4   Betty   NULL
    
    --NULL不等于任何值,甚至NULL不等于NULL
    --默认不能使用<>或=匹配NULL
    SELECT
        *
    FROM Test_NULL tn
    WHERE tn.lname <> NULL OR tn.lname = NULL
    ------------------------------------------

    但需注意:SQL Server仅是在默认情况下不能使用=或<>,当设置ANSI_NULLS为OFF后,即可使用=或<>查询NULL值

    换言之,SQL Server默认是开启ANSI_NULLS选项的。

    --设置ANSI_NULLS为OFF,并使用=NULL查询记录
    SET ANSI_NULLS OFF
    SELECT
        *
    FROM Test_NULL tn
    WHERE tn.lname = NULL
    ------------------------------------------
    3   Aaron   NULL
    4   Betty   NULL

    插入或更新NULL值:

    --插入1条含有NULL的新记录
    INSERT INTO Test_NULL (num,fname,lname) VALUES(5, 'Serena', NULL)
    
    --更新某条记录的字段值为NULL
    UPDATE Test_NULL SET fname = NULL
    WHERE num = 2

    NULL的空间占用

    通常的认识是:NULL在可变长类型(如nvarchar(50),varchar(8))中是不占用空间的,在固定长度的类型(如int)中会占用存储空间。

    实际上,上述的认识不够严谨。真实情况是,NULL在可变长与固定长度的类型中均会占用空间

    在SQL Server非Sparse Columns中,存储NULL的值需1个bit的NULL bitmap mask。

    参考资料

    1. Null Values
      https://msdn.microsoft.com/en-us/library/ms191504.aspx

    2. Use Sparse Columns
      https://msdn.microsoft.com/en-us/library/cc280604.aspx

    展开全文
  • 问题描述: 项目中需要多表查询时相同的列起了别名, 在mybatis中查询无法得到left join的表中对应信息, 只有主表的信息 在数据库中直接测试sql语句排除了语句问题, 也没有报错, 所以不是哪里敲错了 最后关注在别名...

    问题描述: 

    项目中需要多表查询时相同的列起了别名, 在mybatis中查询无法得到left join的表中对应信息, 只有主表的信息

    在数据库中直接测试sql语句排除了语句问题, 也没有报错, 所以不是哪里敲错了 

    最后关注在别名的问题上, 发现mybatis的映射关系中列名有别名必须用别名, 不能用表名. 列名的形式, 否则不会报错但就是查询不到该表的结果

    省略了很多无关列, 用一列说明问题:

     

    选择列时起了别名: 

    select
        sold_out.purchase_id AS soldOutPurchaseId

     MYBATIS中直接sql语句 别名和表名.列名都可以用

    from order_list
    LEFT JOIN sold_out ON order_list.id = sold_out.purchase_id

    映射关系:

    正确:

    <resultMap id="AllResultMap" type="com.xxx.OrderInfoForm" >
        <result column="productInfoId" property="productInfoId" jdbcType="INTEGER" />
    <resultMap>

    错误: 

    <resultMap id="AllResultMap" type="com.xxx.OrderInfoForm" >
        <result column="sold_out.purchase_id" property="productInfoId" jdbcType="INTEGER" />
    <resultMap>

    难受的是没有报错, 不说找不到列啥的, 只是链接的表信息查询不出 , 需要逐个排查

    展开全文
  • 以下的文章主要介绍的是MySQL update 语句的实际用法,我们首先是以单表的UPDATE语句来引出实现MySQL update 语句的实际方案,以下就是文章的详细内容描述,望你看完之后会有收获
  • 正确认识SQL Server中的模糊查询LIKE

    千次阅读 2016-02-05 18:38:04
    LIKE语句的匹配格式及正确使用 参考资料SQL Server中的模糊查询LIKE在SQL Server中,当我们想实现模糊查询时,可能我们首先想到的是使用LIKE语句,其次是使用全文搜索(即Full-Text Search),如下所示是通过LIKE...

    目录

    SQL Server中的模糊查询LIKE

    在SQL Server中,当我们想实现模糊查询时,可能我们首先想到的是使用LIKE语句,其次是使用全文搜索(即Full-Text Search),如下所示是通过LIKE语句对表Person.EmailAddress中的EmailAddress字段进行模糊查询:

    --使用微软官方示例数据库AdventureWorks2008R2
    SELECT  *
    FROM Person.EmailAddress
    WHERE EmailAddress LIKE '%mary%'

    通常,当表的总记录达数十万时,LIKE的执行效率将明显下降。那么我们是否真的正确认识LIKE语句,本文将描述如何正确使用SQL Server中的LIKE语句进行模糊查询。

    LIKE的匹配格式及正确使用

    虽然在SQL Server中LIKE语句可使用如下4种通配符:

    %
    _
    []
    [^]

    但实际总结后,LIKE语句总共如下4种格式:

    %HyperWang%
    %HyperWang
    HyperWang%
    Hyper%Wang

    注意通配符%的位置。

    为了更好的理解这4种匹配格式,我们修改上述sql代码,并在执行后查看IO统计信息与实际执行计划:

    --检查表中的索引情况
    sp_helpindex [Person.EmailAddress]
    -----------------------------------------------------------
    index_nameindex_descriptionindex_keys
    IX_EmailAddress_EmailAddressnonclustered located on PRIMARYEmailAddress
    PK_EmailAddress_BusinessEntityID_EmailAddressIDclustered, unique, primary key located on PRIMARYBusinessEntityID, EmailAddressID

    表格所示,表Person.EmailAddress中的EmailAddress建有非聚集索引。执行修改后的sql代码:

    --匹配mary在中间的记录
    SELECT  EmailAddress
    FROM Person.EmailAddress
    WHERE EmailAddress LIKE '%mary%'
    
    --匹配mary在尾部的记录
    SELECT  EmailAddress
    FROM Person.EmailAddress
    WHERE EmailAddress LIKE '%mary'
    
    --匹配以mary开头的记录
    SELECT EmailAddress
    FROM Person.EmailAddress
    WHERE EmailAddress LIKE 'mary%'
    
    --匹配以ma开头,ry结尾的记录
    SELECT  EmailAddress
    FROM Person.EmailAddress
    WHERE EmailAddress LIKE 'ma%ry'

    其中以格式mary%的效率最好,以index seek方式使用非聚集索引IX_EmailAddress_EmailAddress(如下图所示)。
    mary%

    (43 row(s) affected)
    表 ‘EmailAddress’。扫描计数 1,逻辑读取 3 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

    %mary%mary%的效率最差,IO开销最高,且以index scan方式使用非聚集索引

    (0 row(s) affected)
    表 ‘EmailAddress’。扫描计数 1,逻辑读取 186 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

    因此当我们使用LIKE进行模糊查询时,应尽量使用mary%格式,避免%mary%的格式,同时建立有效的非聚集索引。

    参考资料

    1. LIKE (Transact-SQL)
      https://msdn.microsoft.com/en-us/library/ms179859(v=sql.105).aspx

    2. Improving SQL Server Performance
      https://msdn.microsoft.com/en-us/library/ff647793.aspx

    展开全文
  • oracle-ora 各种sql异常描述

    万次阅读 2012-11-20 17:58:39
    java.sql.SQLException错误! ORA-00904: --invalid column name 无效列名 ORA-00942: --table or view does not exist 表或者视图不存在 ORA-01400: --cannot insert NULL into () 不能将空值插入 ORA...
  • 使用debug模式调试程序,发现 sql 语句和params参数都有值且正确,但是执行query.getRusltList() 方法,却返回 null 值。 未解决问题前代码: controller 层代码 dao 层代码 解决办法 经过对代码仔细观察,调试后...
  • 正确认识SQL Server的字符集 选择合适的SQL Server字符集 错误使用SQL Server的字符集 参考资料正确认识SQL Server的字符集SQL Server作为一个国际化产品,支持多语言环境。在SQL Server中,字符集被称为排序规则...
  • 由于项目在上生产前,有一个安全性代码检测问题,首先检测出来的就是SQL注入问题,就是在写sql语句时,将参数用字符串的形式直接写在sql中,这样会造成安全性问题。 图示是SQL注入检测报告: 以下是分析: 1....
  • 由于日期中包含了年、季、月、日等众多信息,不同的国家对日期格式、日期文字描述及星期有不同的规定,因此产生了日期处理的复杂性。本章主要讨论在SQL Server数据库中对日期的各种处理方法。1.1 日期类型概述SQL ...
  • 关于SQL Server 2000对XML支持的一些见解主要针对"select 字段1,字段2,...,字段n from 表或多表联合查询 where 条件 for xml auto"类似语句的讨论本人在使用以上语句生成XML数据时,发现了一些SQL Server 2000生成...
  • (本文只想描述一下工作上与到的问题,与解决思路,对知识点的说明还请看大神的讲解!) 在Ibatis的使用时候,经常会有这种情况发生,前台想后台传参,去数据库中请求,却拿不到值! 首先调试代码的时候: 1.发现...
  • 有朋友发帖子描述这样一个问题:  通过SSMS向SQL Server 2005中插入中文数据后,查询出来的结果是???,根本就不显示中文。    用图形化和Insert语句后结果也是一样,使用查询分析器操作,情况也是如此。  ...
  • 正确使用Statement的批量SQL命令执行方法 1、现象:问题描述  系统在对定时导入用户数据到系统数据库功能做大规模数据导入测试,导入用户数据量达到1000万以上,出现“out of memory”严重问题,系统宕机。 ...
  • 嵌入式SQL

    万次阅读 多人点赞 2018-06-16 09:55:43
    交互式SQL语言的局限性 从使用者角度 普通用户必须通过数据库应用程序来使用 从SQL本身角度 特别复杂的检索结果难以用一条交互式SQL语句完成,此时需要结合高级语言中经常出现的顺序,分支和循环结构帮助...
  • T-SQL动态查询(4)——动态SQL

    万次阅读 2015-12-09 09:38:17
    接上文:T-SQL动态查询(3)——静态SQL 前言: 前面说了很多关于动态查询的内容,本文将介绍使用动态SQL解决动态查询的一些方法。 为什么使用动态SQL: 在很多项目中,动态SQL被广泛使用甚至滥用,很多时候,动态...
  • 摘要:SQL Server Compact Edition的安装包由三部分功能组成,并且区分CPU平台和操作系统平台,初学者往往不知道如何去区分它们。本文将对SQL Server Compact Edition的安装包进行介绍,让你知道如何区分和选择它们...
  • T-SQL动态查询(3)——静态SQL

    千次阅读 2015-11-26 16:01:48
    接上文:T-SQL动态查询(2)——关键字查询  本文讲述关于静态SQL的一些知识和基础技巧。简介: 什么是静态SQL?静态SQL是和动态SQL相对而言的,其实我们没必要过于纠结精确定义,只要大概知道什么算静态SQL即可。...
  • SQL优化

    千次阅读 2019-01-05 15:10:51
    在应用的的开发过程中,由于初期数据量小,开发人员写SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越大,此时这些...
  • SQL教程

    千次阅读 多人点赞 2018-05-21 23:27:50
    SQL教程 本文是本人学习数据库和SQL时自己做的笔记,属于基本知识,现整理出来放在这里,供自己以后学习和查看。 一、数据库基础知识 1、基础知识 (1)服务型、文件型数据库 基本...
  • 情况描述:数据库中可以查到3条不同数据,但项目中查询的是3条相同的数据。 原因:三条数据的id相同。 解决办法:查询的id改为具有唯一标识的
  • Ibatis 关于DynamicSql源码的解读

    千次阅读 2017-03-15 15:33:45
    而我们利用了集团的garuda运算平台,想利用它建的智能索引和智能查询优化器来优化sql处理复杂业务,所以sql会堆上一些较复杂业务。比如:现在有一个需求,需要对一个二维的数组List里的数据进行迭代遍历,一维数组我们...
  • ❤️ SQL 零基础入门教程【图文并茂】

    万次阅读 多人点赞 2021-09-02 21:13:58
    超全SQL教程,收藏就完事了!
  • 动态SQL与静态SQL

    千次阅读 2012-06-14 22:18:49
    熟悉MS SQLServer的每一个人都应该意识到避免使用动态SQL的代价是较佳的。由于与静态SQL相比而言,动态SQL赋予了更多的权限。正因为你使用了动态SQL,所以会执行一些意想不到的代码。动态SQL通常需要较少的代码,与...
  • 静态SQL和动态SQL

    万次阅读 2012-11-05 15:36:17
    标准的 SQL 语言一般包括三类,即 DDL (Data Definition Language, 数据描述语言 ) 、DML (Data Manipulation Language, 数据操纵语言 ) 和 DCL(Data Control Language,数据控制语言 )。通过这些标准
  • SQL Server 2000之日志传送功能 - 描述(2)角色变更、角色互换、以及监控服务器所在位置 Step 4: 通知监控服务器角色已变更 SQL Server 2000 的日志传送会在监控服务器上安装监控工具程序;最好是在第三台服务器。...
  • 错误描述: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL Network Interfaces, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,072
精华内容 55,228
关键字:

关于sql描述正确