资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

sqlserver替换函数,sql字符替换函数

sqlserver有没有类似oracle中nvl这样的函数

sqlserver中的isnull跟oracle中的nvl相似。

成都创新互联主营古蔺网站建设的网络公司,主营网站建设方案,成都App制作,古蔺h5重庆小程序开发公司搭建,古蔺网站营销推广欢迎古蔺等地区企业咨询

ISNULL

使用指定的替换值替换 NULL。

语法

ISNULL ( check_expression , replacement_value )

参数

check_expression

将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。

replacement_value

在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。

返回类型

返回与 check_expression 相同的类型。

注释

如果 check_expression 不为 NULL,那么返回该表达式的值;否则返回 replacement_value。

select '('||''''||replace(p_fwzz,',',''''||','||'''')||''''||')' into V_STRS from dual;

从 from dual看这是orcle的sql语法,因为dual是oracle的虚拟表,只有oracle有,当然你说在sqlserver中有个表叫dual,那没办法了,那就不一样了

orale中||起字符连接的作用

例 select 'A'||'B' from dual 输出的结构就是AB,对应sqlserver语法是select 'A'+'B'

replace 是字符替换函数,作用是将一个字段中指定的字符串换成其他的字符串

例 select replace(p_fwzz,'A','F') from dual 含义就是只要p_fwzz字段中的数据含字符A,则把A都换成F

剩下就是最麻烦的单引号了

因为单引号是关键字符号,所以要在数据中操作单引号要注意

举个例子:

需要显示结果A

select 'A' from dual,ok没问题

需要显示结果为'

如果写成select ''' from dual就是错的,必须写成select '''' from dual才行

所以select ''''||','||'''' from dual 的输出结果是','

关键的字符和函数我已经解释了完了,至于你写的那个语句是什么意思你可自行按我说的方式研究一下,我就不告诉你了,这样才能学到东西

顺便说一下,你的sql语句有问题 dual 是oracle的虚拟表,是没有实际字段的,所以replace(p_fwzz,',',''''||','||'''')这段是没意义滴!

SQL查询结果替换???????

有办法的,不过要慎用

先为表1增加两个字段,一个是begin_name 一个是end_name

然后update这两个字段

替换为第三个字段里的前4位和后4位,用substr函数

再然后拼接一下字符串替换一下

最后把新增的两个字段弄掉

----------------补充-------------

具体步骤

1.alter table 表1 add begin_name varchar2(24) NULL;

alter table 表1 add end_name varchar2(24) NULL;

长度自己定义,足够长就行,以后这里要存放表2的字段3

2.update 表1 set begin_name=substr(字段3,1,4);

update 表1 set end_name=substr(字段3,-4,4);

commit;

3.update 表1 a set a.begin_name=(select b.字段3 from 表1 b where a.字 段1=b.字段1);

update 表1 a set a.end_name=(select b.字段3 from 表1 b where a.字段1=b.字段1);

commit;

4.update 表1 set 字段3=begin_name||'~'||end_name;

commit;

5.drop那俩字段,这个不用我写了吧?

还有点问题,如果象你第三条纪录,那你就判断一下字段3的长度就行了,这个改起来又不难

我写的很详细了啊,你只要把表1表2和字段名换成你自己数据库里的不就行了吗

sqlserver 数据库批量替换

如果保险一点的话最好加一个条件限制,就是where name like '%武汉生物',这样替换的都是以“武汉生物”结尾的行

SQLSERVER 中有没有和MySQL LAST_INSERT_ID()函数等价的函数?

Transact-SQL 参考

IDENTITY(属性)

在表中创建一个标识列。该属性与 CREATE TABLE 及 ALTER TABLE Transact-SQL 语句一起使用。

说明 IDENTITY 属性与 SQL-DMO Identity 属性不同,后者表现列的行标识属性。

语法

IDENTITY [ ( seed , increment ) ]

参数

seed

装载到表中的第一个行所使用的值。

increment

增量值,该值被添加到前一个已装载的行的标识值上。

必须同时指定种子和增量,或者二者都不指定。如果二者都未指定,则取默认值 (1,1)。

注释

如果在经常进行删除操作的表中存在着标识列,那么在标识值之间可能会产生差距。如果这构成了问题,那么请不要使用 IDENTITY 属性。但是,为了确保未产生差距,或者为了弥补现有的差距,在用 SET IDENTITY_INSERT ON 显式地输入标识值之前,请先对现有的标识值进行计算。

如果重新使用已删除的标识值,那么请使用示例 B 中的示例代码进行检查,以获得下一个可用的标识值。请用您的表名、标识列数据类型以及(该数据类型的)最大可允许值的数值 –1 替换 tablename、column_type 和 max(column_type) – 1。

使用 DBCC CHECKIDENT 检查当前的标识值,并将其与标识列中的最大值进行比较。

当将 IDENTITY 属性与 CREATE TABLE 一起使用时,Microsoft® SQL Server™ 使用 CREATE TABLE 的 NOT FOR REPLICATION 选项替代标识列的自动增加。通常,SQL Server 给插入表中的每个新行指派一个值,该值比前面的最高值要大出某些增量。但是,如果新行是由另一个数据源复制过来的,那么标识值必须保持与其在数据源中完全相同。

示例

A. 将 IDENTITY 属性与 CREATE TABLE 一起使用

下面的示例创建一个新表,该表将 IDENTITY 属性用于获得自动增加的标识号。

USE pubs

IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_NAME = 'new_employees')

DROP TABLE new_employees

GO

CREATE TABLE new_employees

(

id_num int IDENTITY(1,1),

fname varchar (20),

minit char(1),

lname varchar(30)

)

TERADATA如何替换字符串中的回车字符

char(13) 是换行 char(10)是回车

update 表名 set 字段名=replace(字段名,char(13),'')


分享标题:sqlserver替换函数,sql字符替换函数
分享网址:http://cdkjz.cn/article/hdoies.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220