SQL2000 有没有这样的函数

linjie0000 2009-02-19 10:05:00

XXX('abc',1,2)='ab'

XXX('0',6)=000000

谢谢请指教一下
...全文
77 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Roc_Lee 2009-02-19
  • 打赏
  • 举报
回复

SELECT SUBSTRING('abc',1,2)


结果 ab

SELECT REPLICATE('0',6)

结果 000000
linjie0000 2009-02-19
  • 打赏
  • 举报
回复
谢谢了。可以了
dawugui 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 linjie0000 的帖子:]

XXX('abc',1,2)='ab'

XXX('0',6)=000000

谢谢请指教一下
[/Quote]
SUBSTRING
返回字符、binary、text 或 image 表达式的一部分。有关可与该函数一起使用的有效 Microsoft® SQL Server™ 数据类型的更多信息,请参见数据类型。

语法
SUBSTRING ( expression , start , length )

参数
expression

是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。

start

是一个整数,指定子串的开始位置。

length

是一个整数,指定子串的长度(要返回的字符数或字节数)。



说明 由于在 text 数据上使用 SUBSTRING 时 start 和 length 指定字节数,因此 DBCS 数据(如日本汉字)可能导致在结果的开始或结束位置拆分字符。此行为与 READTEXT 处理 DBCS 的方式一致。然而,由于偶而会出现奇怪的结果,建议对 DBCS 字符使用 ntext 而非 text。


返回类型
如果 expression 是支持的字符数据类型,则返回字符数据。如果 expression 是支持的 binary 数据类型,则返回二进制数据。

返回字符串的类型与给定表达式的类型相同(表中显示的除外)。

给定的表达式 返回类型
text varchar
image varbinary
ntext nvarchar


注释
在字符数中必须指定使用 ntext、char 或 varchar 数据类型的偏移量(start 和 length)。在字节数中必须指定使用 text、image、binary 或 varbinary 数据类型的偏移量。



说明 兼容级别可能影响返回值。有关兼容级别的更多信息,请参见 sp_dbcmptlevel。


示例
A. 在字符串上使用 SUBSTRING
下例显示如何只返回字符串的一部分。该查询在一列中返回 authors 表中的姓氏,在另一列中返回 authors 表中的名字首字母。

USE pubs
SELECT au_lname, SUBSTRING(au_fname, 1, 1)
FROM authors
ORDER BY au_lname

下面是结果集:

au_lname
---------------------------------------- -
Bennet A
Blotchet-Halls R
Carson C
DeFrance M
del Castillo I
...
Yokomoto A

(23 row(s) affected)

下例显示如何显示字符串常量 abcdef 中的第二个、第三个和第四个字符。

SELECT x = SUBSTRING('abcdef', 2, 3)

下面是结果集:

x
----------
bcd

(1 row(s) affected)



REPLICATE
以指定的次数重复字符表达式。

语法
REPLICATE ( character_expression , integer_expression )

参数
character_expression

由字符数据组成的字母数字表达式。character_expression 可以是常量或变量,也可以是字符列或二进制数据列。

integer_expression

是正整数。如果 integer_expression 为负,则返回空字符串。

返回类型
varchar

character_expression 必须为可隐性转换为 varchar 的数据类型。否则,使用 CAST 函数显式转换 character_expression。

注释
兼容级别可能影响返回值。有关更多信息,请参见 sp_dbcmptlevel。

示例
A. 使用 REPLICATE
下例重复两遍每个作者的名字。

USE pubs
SELECT REPLICATE(au_fname, 2)
FROM authors
ORDER BY au_fname

下面是结果集:

----------------------
AbrahamAbraham
AkikoAkiko
AlbertAlbert
AnnAnn
AnneAnne
BurtBurt
CharleneCharlene
CherylCheryl
DeanDean
DirkDirk
HeatherHeather
InnesInnes
JohnsonJohnson
LiviaLivia
MarjorieMarjorie
MeanderMeander
MichaelMichael
MichelMichel
MorningstarMorningstar
ReginaldReginald
SherylSheryl
StearnsStearns
SylviaSylvia
(23 row(s) affected)

B. 使用 REPLICATE、SUBSTRING 和 SPACE
下例使用 REPLICATE、SUBSTRING 和 SPACE 生成 authors 表中的所有作者的电话和传真列表。

-- Replicate phone number twice because the fax number is identical to
-- the author telephone number.
USE pubs
GO
SELECT SUBSTRING((UPPER(au_lname) + ',' + SPACE(1) + au_fname), 1, 35)
AS Name, phone AS Phone, REPLICATE(phone,1) AS Fax
FROM authors
ORDER BY au_lname, au_fname
GO

下面是结果集:

Name Phone Fax
----------------------------------- ------------ -----------------------
BENNET, Abraham 415 658-9932 415 658-9932
BLOTCHET-HALLS, Reginald 503 745-6402 503 745-6402
CARSON, Cheryl 415 548-7723 415 548-7723
DEFRANCE, Michel 219 547-9982 219 547-9982
DEL CASTILLO, Innes 615 996-8275 615 996-8275
DULL, Ann 415 836-7128 415 836-7128
GREEN, Marjorie 415 986-7020 415 986-7020
GREENE, Morningstar 615 297-2723 615 297-2723
GRINGLESBY, Burt 707 938-6445 707 938-6445
HUNTER, Sheryl 415 836-7128 415 836-7128
KARSEN, Livia 415 534-9219 415 534-9219
LOCKSLEY, Charlene 415 585-4620 415 585-4620
MACFEATHER, Stearns 415 354-7128 415 354-7128
MCBADDEN, Heather 707 448-4982 707 448-4982
O'LEARY, Michael 408 286-2428 408 286-2428
PANTELEY, Sylvia 301 946-8853 301 946-8853
RINGER, Albert 801 826-0752 801 826-0752
RINGER, Anne 801 826-0752 801 826-0752
SMITH, Meander 913 843-0462 913 843-0462
STRAIGHT, Dean 415 834-2919 415 834-2919
STRINGER, Dirk 415 843-2991 415 843-2991
WHITE, Johnson 408 496-7223 408 496-7223
YOKOMOTO, Akiko 415 935-4228 415 935-4228
(23 row(s) affected)

C. 使用 REPLICATE 和 DATALENGTH
本例中,当数值从数字数据类型转换为字符型或 Unicode 型时,从左填充数字,使其达到指定的长度。

USE Northwind
GO
DROP TABLE t1
GO
CREATE TABLE t1
(
c1 varchar(3),
c2 char(3)
)
GO
INSERT INTO t1 VALUES ('2', '2')
INSERT INTO t1 VALUES ('37', '37')
INSERT INTO t1 VALUES ('597', '597')
GO
SELECT REPLICATE('0', 3 - DATALENGTH(c1)) + c1 AS [Varchar Column],
REPLICATE('0', 3 - DATALENGTH(c2)) + c2 AS [Char Column]
FROM t1
GO

dawugui 2009-02-19
  • 打赏
  • 举报
回复
REPLICATE('0',6) = '000000'
dawugui 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 linjie0000 的帖子:]

XXX('abc',1,2)='ab'

XXX('0',6)=000000

谢谢请指教一下
[/Quote]
substring('abc',1,2) = 'ab'

水族杰纶 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fcuandy 的回复:]
SQL codeSELECT REPLICATE('0',6)
SELECT SUBSTRING('abc',1,2)
[/Quote]
...
fcuandy 2009-02-19
  • 打赏
  • 举报
回复
SELECT REPLICATE('0',6)
SELECT SUBSTRING('abc',1,2)
liangCK 2009-02-19
  • 打赏
  • 举报
回复
...

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧