大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
语句帖出来
创新互联建站是少有的成都网站建设、网站设计、营销型企业网站、小程序制作、手机APP,开发、制作、设计、买友情链接、推广优化一站式服务网络公司,2013年开创至今,坚持透明化,价格低,无套路经营理念。让网页惊喜每一位访客多年来深受用户好评
INSERT
INTO
tbl_SMSend@sms
(TryTimes,
SendTime,
SubTime,
SendType)
VALUES
('0',
to_date('2009-07-08','yyyy-mm-dd'),to_date('2009-07-08','yyyy-mm-dd'),
'1')
原因是因为,sqlserver与oracle中的函数不是全部通用,在oracle中插入日期型数据,需要将字符型的日期用to_date进行转换
这个好像不能实现吧。自动增长列不会重新改变的。 你可以使用row_number来将它排序,不知道这样能否满足你的需求。如果你非要使用标识列,我提供两种方法可以做到,一:是将表整个表复制(除了标识列),重新加一个标识列。二:写一个触发器将后面的行移动上来但是两种效果都不是很好。
大多数对象要求有标识符,但对有些对象(例如约束),标识符是可选的。
标识符就相当于这个变量或常量的名字一样了,数据库对象的名称即为其标识符。MicrosoftSQLServer中的所有内容都可以有标识符,服务器,数据库和数据库对象(例如表,视图,列,索引,触发器,过程,约束及规则等)都可以有标识符,大多数对象要求有标识符,但对有些对象(例如约束),标识符是可选的。
select [SNAME],IDENTITY(int,1,1) as sid into #tmp from [sInfo]
就可以了,那个标识符列不用插的
几个概念:
A、标识符:是数据库对象的名称。
数据库对象的名称被看成是该对象的标识符。Microsoft® SQL Server™ 中的每一内容都可带有标识符。服务器、数据库和数据库对象(例如表、视图、列、索引、触发器、过程、约束、规则等)都有标识符。大多数对象要求带有标识符,但对有些对象(如约束)标识符是可选项。
B、保留关键字:是sql语言的语法。属于代码的范畴。
保留关键字是用来定义、操作和访问数据库。保留关键字是 SQL Server 使用的 Transact-SQL 语言语法的一部分,用于分析和理解 Transact-SQL 语句和批处理。尽管在 Transact-SQL 脚本中,使用 SQL Server 保留关键字作为标识符和对象名在语法上是可行的,但规定只能使用分隔标识符。
C、字符串:数据类型的一种,数据类型有整数型、字符串型等。属于数据的范畴。
每个列、局部变量、表达式和参数都有一个相关的数据类型。即属于某种数据类型。
D、通配符、转义符:这2个是跟字符串相关的概念。一般出现在字符串中。
比如 like ’dsd%‘ , dsd% 是字符串。%是通配符。这个语句的含义大家应该都知道,^_^。
使用转义符,可以把通配符改变成普通字符。2种方法:
1、[]是默认的转义符,里面的通配符(里面只能是通配符),都当做普通字符处理:
like ’dsd[%]‘,这时,%就是个普通字符了,查找条件就是要某个字段值完全等于 dsd% 。
2、用ESCAPE关键字定义转义符,
like ’dsd/%‘ ESCAPE ’/' 效果同 like ’dsd[%]‘
还有一种转义符情况:
大家知道,单引号一般可用来包含字符串,如果字符串中有单引号是普通字符,那么就同时有了2种意思的单引号,怎么区分呢?就要用2个单引号来转义为普通字符,如 like ‘ds''d’ ,其实就是指字符串:ds'd
后面提到的QUOTENAME函数,默认是用[]来做分隔符,如果字符串中有[],函数转换后,字符串中的[]就要用两个]]来转义,表明这个[]是个普通字符,与字符串前后的分隔符 [] 相区别。
步入正题,
标识符,分为:
一、常规标识符:符合常规标识符规则的标识符。
常规标识符规则如下:(参考sqlserver的联机帮助)
1、。。。。。
2、。。。。。
3、。。。。。
4、。。。。。
二、分隔标识符:包含在双引号 " 或者方括号 [ ] 内的标识符就是分隔标识符。
注意:双引号 " 或者方括号 [ ] 是分隔符。
在 Transact-SQL 语句中,对不符合常规标识符规则的标识符必须用双引号或方括号来分隔。符合标识符格式规则的标识符可以分隔,也可以不分隔。
1、当QUOTED_IDENTIFIER 为 ON 时,默认是on的。 SQL Server 遵循 SQL-92 规则:
双引号只能用于分隔标识符,不能用于分隔字符串。
为保持与现有应用程序的兼容性,SQL Server 并不完全强制该规则。如果字符串没有超过标识符的长度,则该字符串可包含在双引号内。但不建议这样做。
单引号必须用来包含字符串,不能用于分隔标识符。
如果字符串包含单引号,则需要在单引号前再增加一个单引号:
SELECT * FROM "My Table"
WHERE "Last Name" = 'O''Brien'
注意:"Last Name",你可以写成'Last Name'而不会报语法错误,是因为,sql认为是进行字符串的比较了,比如写成'Last Name'='Last Name',比较结果为真,表中的全部记录就被select出来了。而如果写成:WHERE "Last Name" = "O''Brien",即等号右边改成双引号,则会把O''Brien当成一个标识符(数据库对象),即当成一个字段名,运行时,会提示没有O''Brien列。 2、当 QUOTED_IDENTIFIER 为 OFF 时,对于双引号和单引号的使用,SQL Server 遵循如下规则:
引号不能用于分隔标识符,而是用括号作为分隔符。
单引号或双引号可用于包含字符串。
如果使用双引号,嵌入的单引号不需要用两个单引号来表示:
SELECT * FROM [My Table]
WHERE [Last Name] = "O'Brien"
常规标识符和分隔标识符包含的字符数必须在 1 到 128 之间
另外:
将标识符用作参数:(具体请参考联机帮助)
许多系统存储过程、函数和 DBCC 语句都把对象名当作参数。其中一些参数接受多部分对象名,另一些则只接受单部分名称。接受单部分对象名称还是多部分对象名称决定了 SQL Server 在内部如何分析和使用参数。 。。。。。。。
另外:
QUOTENAME函数:
msdn解释:返回带有分隔符的 Unicode 字符串,分隔符的加入可使输入的字符串成为有效的 Microsoft® SQL Server™ 分隔标识符。
以下示例接受字符串 abc[]def 并使用 [ 和 ] 字符来创建有效的 SQL Server 分隔标识符:
SELECT QUOTENAME('abc[]def')
下面是结果集:
[abc[]]def]
(1 row(s) affected)
注意,字符串"abc[]def"中的右括号有两个,用于表示转义符,转换成普通字符,与分隔符 [] 相区别。
解释:字符串 abc[]def 中的[]是当做普通字符,所以用 ] ] 来表示 ] 是个普通字符,即表明中间的 [] 就是个普通字符。
如果是:SELECT QUOTENAME('abc[]def' , '()' ) ,不用[]来做分隔符,那么结果是:
(abc[]def) ,就不用两个]] 来转义了,因为新的字符串中只有一种意思的[],即普通字符。
这是个通用的规则,比如字符串中含有单引号 ' 为普通字符串时,比如 :ds'd ,
like 语句就要改成:like ‘ds‘’d’,而不是: like 'ds'd' 。即2个单引号表示转义符,转换成普通单引号字符 ' 。