`
suizhikuo
  • 浏览: 28815 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL数据表中有savetime(smalldatetime类型)字段,表中有两条记录,savetime值为:2005-3-8 12:12:00和2005-6-6 14:02:02

 
阅读更多

SQL数据表中有savetime(smalldatetime类型)字段,表中有两条记录,savetime值为:2005-3-8 12:12:00和2005-6-6 14:02:02
我用下面语句什么也搜不出来
select * from soft where soft.savetime like'%2005-3-8%'
SQL帮助中说:
"当搜索 datetime 值时,推荐使用 LIKE,因为 datetime 项可能包含各种日期部分。例如,如果将值 19981231 9:20 插入到名为 arrival_time 的列中,则子句 WHERE arrival_time = 9:20 将无法找到 9:20 字符串的精确匹配,因为 SQL Server 将其转换为 1900 年 1 月 1 日上午 9:20。然而,子句 WHERE arrival_time LIKE '%9:20%' 将找到匹配。"
后运行下面语句SELECT soft.*, CAST(soft.savetime AS varchar(20)) AS strdatetime,
发现
SQL把smalldatetime格试转成:
03 8 2005 12:12PM
我何用 like'%2005-3-8%'搜索到2005年3月8日所有的记录?

select *
from soft
where datediff(d,soft.savetime,convert(datetime,'20050308',121))=0
----
select *
from soft
where convert(char(10),soft.savetime,121)='20050308'

2, SQL对like 操作中的特殊字符处理方法:

SQL Server查询过程中,单引号 ' 是特殊字符,所以在查询的时候要转换成双单引号 '' 。

在like操作还有以下特殊字符:下划线_,百分号%,方括号[],尖号^。

其用途如下:

下划线:用于代替一个任意字符(相当于正则表达式中的 ? )

百分号:用于代替任意数目的任意字符(相当于正则表达式中的 * )

方括号:用于转义(事实上只有左方括号用于转义,右方括号使用最近优先原则匹配最近的左方括号)

尖号:用于排除一些字符进行匹配(这个与正则表达式中的一样)

以下是一些匹配的举例,需要说明的是,只有like操作才有这些特殊字符,=操作是没有的。

a_b... a[_]b%

a%b... a[%]b%

a[b... a[[]b%

a]b... a]b%

a[]b... a[[]]b%

a[^]b... a[[][^]]b%

a[^^]b... a[[][^][^]]b%

在实际进行处理的时候,对于=操作,我们一般只需要如此替换:

' -> ''

对于like操作,需要进行以下替换(注意顺序也很重要)

[ -> [[] (这个必须是第一个替换的!!)

% -> [%] (这里%是指希望匹配的字符本身包括的%而不是专门用于匹配的通配符)

_ -> [_]

^ -> [^]

3,SQL Like 通配符特殊用法:Escape

阐述Escape 的作用:

1.使用 ESCAPE 关键字定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串 5% 的字符串,请使用:
WHERE ColumnA LIKE '%5/%%' ESCAPE '/'
但是在mysql中好像不能使用"\"。
2.ESCAPE 'escape_character'
允许在字符串中搜索通配符而不是将其作为通配符使用。escape_character 是放在通配符前表示此特殊用途的字符。
SELECT *
FROM finances
WHERE description LIKE 'gs_' ESCAPE 'S'
GO
意思就是:
比如,我们要搜索一个字符串 "g_" ,如果直接 like "g_",那么 "_"的作用就是通配符,而不是字符,结果,我们会查到比如 "ga","gb","gc",而不是我们需要的 "g_".
用 LIKE 'gs_' ESCAPE 'S' 's'表示特殊用法标志
3.create table a (name varchar(10))
go
insert into a select '11%22'
union all select '11%33'
union all select '12%33'
go
select * from a WHERE name LIKE '%/%33' ESCAPE '/' --指定用'/'符号来说明跟在其后面的通配符字符为普能字符。(第二个%是字符不是通配符来的)
go
drop table a

结果为:
name
----------
11%33
12%33

总结:

%:匹配零个及多个任意字符; _:与任意单字符匹配; []:匹配一个范围; [^]:排除一个范围

Symbol Meaning
like '5[%]' 5%
like '[_]n' _n
like '[a-cdf]' a, b, c, d, or f
like '[-acdf]' -, a, c, d, or f
like '[[]' [
like ']' ]
like 'abc[_]d%' abc_d and abc_de
like 'abc[def]' abcd, abce, and abcf
like '[^1-9]' 0
like '[^1-9b-z]' 0, a

对于字符串中出现的特殊字符:'%','[','[]', '_' 可以使用 '[]' 把它们包含起来,这样在匹配模式(pattern)中,它们就被当作普通字符对待了。

1. 用 like '[[]' 匹配特殊字符 '['

select 1 where '[ABCDE' like '[[]%'
2. 用 like ']' 匹配特殊字符 ']'

select 1 where ']ABCDE' like ']%'
3. 用 like '[[]]' 匹配特殊字符 '[]'

select 1 where '[]ABCDE' like '[[]]%%'
4. 用 like '[_]' 匹配特殊字符 '_'

select 1 where '_ABCDE' like '[_]%'
5. 用 like '[%]' 匹配特殊字符 '%'

select 1 where 'ABC%DE' like 'ABC[%]DE'
对于其他的特殊字符:'^', '-', ']' 因为它们本身在包含在 '[]' 中使用,所以需要用另外的方式来转义,于是就引入了 like 中的 escape 子句,另外值得注意的是:escape 可以转义所有的特殊字符。

select 1 where '^ABCDE' like '!^ABCDE' escape '!'
select 1 where '-ABCDE' like '!-ABCDE' escape '!'
select 1 where ']ABCDE' like '!]ABCDE' escape '!'

select 1 where '%ABCDE' like '\%ABCDE' escape '\'
select 1 where '%ABCDE' like '!%ABCDE' escape '!'
select 1 where '%ABCDE' like '#%ABCDE' escape '#'
select 1 where '%ABCDE' like '@%ABCDE' escape '@'

select 1 where '[ABCDE' like '![ABCDE' escape '!'
select 1 where ']ABCDE' like '!]ABCDE' escape '!'
规律就是用 escape 后面紧跟着的字符来做转义字符。 escape 后面的字符相当于 C 语言字符串中的转义字符 '\'。

最后,看一个更加复杂的匹配

select 1 where '[^A-Z]ABCDE' like '\[\^A\-Z\]%' escape '\'

为了您的安全,请只打开来源可靠的网址

打开网站 取消

来自: http://hi.baidu.com/cubeking/blog/item/dd5dc63fa54114e23c6d97e9.html



广告来啦: 女装频道 天天疯狂购 聚划算精选频道 天天疯狂购 秒杀满立减 淘宝皇冠店铺精选 女装风向标 鞋包配饰风向标 服饰箱包 天天疯狂购 点击链接支持我的博客 点击链接支持我的博客 点击链接支持我的博客 点击链接支持我的博客 手提包旅行包手提袋旅行袋 防水 大容量 女款 热卖 3个江浙沪包邮 雾花 韩版 可爱大圆点 二层双层 家用旅行便携式化妆包 手提包 2011新款 男包 大容量 旅行包 独立鞋位 运动包 单肩 手提 健身包

分享到:
评论

相关推荐

    SQLServer常用字段类型

    下面将详细解析《SQL Server常用字段类型》资料中提及的关键数据类型及其应用特点。 #### 数值类型 1. **Bit**:用于存储布尔值,仅占1位,取值范围为0或1,常用于表示真(True)或假(False)、是(Yes)或否(No...

    SQLSERVER实用教程- 表与表数据操作.pdf

    - **表**:在SQL Server中,表是最基本的数据存储单元,它由一系列的行(记录)和列(字段)组成,形成一个二维表格结构。表用于存储特定类型的数据集。 - **表结构**:指构成表的各个列的名称及其对应的数据类型。...

    SQL SERVER与C#数据类型对应表

    本文将详细介绍 SQL Server 中的各种数据类型及其对应的 C# 类型,并对每种类型进行解释。 #### 1. 布尔类型(Boolean) - **SQL Server**: `bit` - **C#**: `Boolean` (参考) / `bool` (值类型) - **说明**:...

    SqlServer数据库的数据类型

    ### SqlServer数据库的数据类型详解 数据类型在编程与数据库管理中扮演着至关重要的角色,它不仅定义了数据的存储方式,还决定了数据可以执行的操作。SQL Server作为一种广泛使用的数据库管理系统,提供了丰富的...

    sqlserver-oracle 数据类型对照

    - `float`在SQL Server中分为两种:`float(4)`对应Oracle的`BINARY_FLOAT`,`float(8)`对应`BINARY_DOUBLE`。 - `money`和`smallmoney`在SQL Server中对应Oracle的`NUMBER(precision,scale)`,其中scale是小数位数...

    SQL_Server_2005_常用数据类型详解

    在SQL Server 2005中,数据类型是定义数据库中列或变量的数据格式的关键元素。以下是关于SQL Server 2005常用数据类型的详细解释: 1. **字符串数据类型**: - `char`:定长字符串类型,用于存储长度固定的非...

    SQL SERVER实用教程 T-SQL语言.pdf

    - **示例**:查询表中的所有记录、插入一条新记录、更新某条记录的字段值或删除记录。 - **数据控制语言(DCL)**: - **作用**:用于管理用户的访问权限。 - **关键字**:`GRANT`, `REVOKE`, `DENY`。 - `...

    SQL SERVER数据类型表

    在SQL Server中,数据类型是定义列、变量和其他数据库对象属性的基本构建块。它们决定了可以存储何种类型的数据,以及如何处理这些数据。SQL Server提供了多种数据类型,包括数值类型、字符类型、日期/时间类型、二...

    SQL2005 数据类型

    本文将详细介绍SQL2005中的各种数据类型及其特点,帮助数据库开发者和管理员更好地理解和应用这些数据类型。 #### Bigint (整型) Bigint数据类型用于存储极大数据范围的整数,范围为`-9223372036854775808`至`...

    sqlserver数据类型详解

    ### SQL Server 数据类型详解 #### 一、概述 在 SQL Server 中,数据类型是指定用于存储数据的格式。正确选择数据类型对于确保数据完整性、提高性能以及减少存储空间至关重要。本文将详细介绍 SQL Server 中常见的...

    SQL基础T-SQL数据类型[参考].pdf

    在T-SQL中,数据类型是定义变量、常量、函数参数和表列的基础,它们决定了数据如何被存储和处理。 1. 数值型数据类型: - INTEGER (INT):4字节,存储范围-2,147,483,648到2,147,483,647。 - SMALLINT:2字节,...

    SQL字段类型

    在SQL数据库中,字段类型的选择对于数据存储和检索的效率至关重要。本文主要探讨了C#中常见的几种字段类型,包括字符类型、日期时间类型、整数类型以及浮点数和数值类型。 1. 字符类型: - `char` 和 `varchar`:...

    三大数据库的数据类型及sql server08快捷键

    3. **SQL Server** 数据类型: - 数值类型:INT、TINYINT、SMALLINT、BIGINT、FLOAT、REAL、DECIMAL、NUMERIC。 - 字符串类型:VARCHAR、NVARCHAR、CHAR、NCHAR、TEXT、NTEXT、IMAGE。 - 日期和时间类型:DATE、...

    SQL Server 2008:T-SQL初学者指南(中文)

    3. **日期/时间数据类型**:如DATETIME、SMALLDATETIME等。 4. **混合型数据类型**:用于存储多种格式的数据,如SQL_VARIANT。 5. **DECIMAL存储类型**:用于存储精确的小数点数据,可以附加VARDECIMAL属性。 每种...

    T-SQL中的数据类型

    在T-SQL中,数据类型是定义数据结构和表达式的基础,它们决定了数据的存储方式、占用的空间以及处理数据的规则。SQL Server 2000 提供了一系列丰富的数据类型,以满足各种不同应用场景的需求。 1. **整数数据类型**...

    SQL SERVER字段类型说明

    本文将详细介绍 SQL Server 中常见的字段类型及其特性,帮助数据库开发者及管理员更好地理解和选择适合的数据类型。 #### 二、数值类型 1. **Bit**: 是一种特殊的布尔类型,用于存储只有两种状态(0 或 1)的数据...

    SQL数据库数据类型说明

    SQL 数据库中有多种数据类型,每种数据类型都有其特点和应用场景。了解这些数据类型是 SQL 编程的基础。 1. 整型数据类型 SQL 数据库中的整型数据类型包括 bit、int、smallint 和 tinyint 等。 * bit 数据类型:...

    oracle和sql数据类型

    Oracle 和 SQL 数据类型是数据库管理系统中用于定义和存储数据的基础组件。它们决定了数据的结构、大小以及如何进行处理。以下是两种数据库系统中主要数据类型的详细比较: **Oracle 数据类型** 1. **Char**: Char...

    Microsoft Access数据类型与SQL Server数据类型的区别

    ### Microsoft Access 数据类型与 SQL Server 数据类型的主要区别 在数据库设计和开发过程中,选择合适的数据类型对于确保数据的准确性和优化存储空间至关重要。Microsoft Access 和 SQL Server 虽然都是微软旗下的...

Global site tag (gtag.js) - Google Analytics