要改某字段的内容,要求改为大写的情况:
1、字段首字母
2、空格后的首字母
3、“-”后的首字母
其它都改为小写。
1、字段首字母
2、空格后的首字母
3、“-”后的首字母
其它都改为小写。
解决方案 »
- Insert into select 导数据时 提示列名无效?
- SQL两个表如何生成一个表
- 用case划分三字段
- 这样一个select语句能搞定不?
- 如何把俩个表都结果集统一输出
- 谁能帮我解决好几天都没有解决的问题!
- 两台机器数据互通
- 在网上使用推式发布数据库,如果网络断了,发布就停了,即使网络恢复,也必须点击"Start Synchonizing",我希望网络恢复后自动可以继续发布订
- 脚本文件是干什么的?
- ~~~~!!!救火!!!!!!!
- 【急 难题】 SQL Server中提取下列这张表中这些数据?
- 自从见到了EMS SQL Manager 2005 for SQL Server Lite ,我再也不用SQL server企业管理器了,各位还有什么好的第三方软件推荐一下啊
返回将小写字符数据转换为大写的字符表达式。语法
UPPER ( character_expression )参数
character_expression由字符数据组成的表达式。character_expression 可以是常量、变量,也可以是字符或二进制数据的列。返回类型
varchar注释
character_expression 必须为可隐性转换为 varchar 的数据类型。否则请使用 CAST 函数显式转换 character_expression。示例
本示例使用 UPPER 函数和 RTRIM 函数来返回整理过的大写的作者姓名。USE pubs
GO
SELECT UPPER(RTRIM(au_lname)) + ', ' + au_fname AS Name
FROM authors
ORDER BY au_lname
GO下面是结果集:Name
--------------------------------------------------------------
BENNET, Abraham
BLOTCHET-HALLS, Reginald
CARSON, Cheryl
DEFRANCE, Michel
DEL CASTILLO, Innes
DULL, Ann
GREEN, Marjorie
GREENE, Morningstar
GRINGLESBY, Burt
HUNTER, Sheryl
KARSEN, Livia
LOCKSLEY, Charlene
MACFEATHER, Stearns
MCBADDEN, Heather
O'LEARY, Michael
PANTELEY, Sylvia
RINGER, Albert
RINGER, Anne
SMITH, Meander
STRAIGHT, Dean
STRINGER, Dirk
WHITE, Johnson
YOKOMOTO, Akiko (23 row(s) affected)
UPPER()函數
用法 樓上的大烏龜已經講的很清楚了.
例如有表
id name
1 aBC EFG
2 hij-klm
3 NOPQ我需要的结果:
id name
1 Abc Efg
2 Hij-Klm
3 Nopq谢谢
insert into tb values(1 , 'aBC EFG')
insert into tb values(2 , 'hij-klm')
insert into tb values(3 , 'NOPQ')
goselect id , name = upper(left(name , 1)) + lower(substring(name,2,len(name))) from tb where charindex(' ' , name) = 0 and charindex('-' , name) = 0
union all
select id , name = upper(left(name , 1)) + lower(substring(name,2,charindex(' ',name) - 1)) + upper(substring(name,charindex(' ',name) + 1,1)) from tb where charindex(' ' , name) > 0 and len(name) = charindex(' ',name) + 1
union all
select id , name = upper(left(name , 1)) + lower(substring(name,2,charindex(' ',name) - 1)) + upper(substring(name,charindex(' ',name) + 1,1)) + lower(substring(name,charindex(' ',name) + 2,len(name))) from tb where charindex(' ' , name) > 0 and len(name) > charindex(' ',name) + 1
union all
select id , name = upper(left(name , 1)) + lower(substring(name,2,charindex('-',name) - 1)) + upper(substring(name,charindex('-',name) + 1,1)) from tb where charindex('-' , name) > 0 and len(name) = charindex('-',name) + 1
union all
select id , name = upper(left(name , 1)) + lower(substring(name,2,charindex('-',name) - 1)) + upper(substring(name,charindex('-',name) + 1,1)) + lower(substring(name,charindex('-',name) + 2,len(name))) from tb where charindex('-' , name) > 0 and len(name) > charindex('-',name) + 1
order by iddrop table tb /*
id name
----------- ------------------------------------------------
1 Abc Efg
2 Hij-Klm
3 Nopq(所影响的行数为 3 行)*/
-- Author: liangCK 小梁
---------------------------------
--> 生成测试数据: @T
DECLARE @T TABLE (id INT,name VARCHAR(50))
INSERT INTO @T
SELECT 1,'aBC EFG' UNION ALL
SELECT 2,'hij-klm' UNION ALL
SELECT 3,'NOPQ'--SQL查询如下:;WITH Liang AS
(
SELECT
M.id,
SUBSTRING(M.name,N.number,1) AS s,
number
FROM @T AS M
JOIN master.dbo.spt_values AS N
ON number BETWEEN 1 AND LEN(M.name)
AND N.type='p'
)
UPDATE A SET
name=B.string.value('.','VARCHAR(max)')
FROM @T AS A
CROSS APPLY (
SELECT string=(
SELECT
CASE WHEN number=1 OR
(SELECT s
FROM Liang
WHERE id=T.id
AND number=T.number-1) IN(' ','-')
THEN UPPER(s)
ELSE LOWER(s) END
FROM Liang AS T
WHERE id=A.id
FOR XML PATH(''),TYPE
)
) AS BSELECT * FROM @t/*
id name
----------- --------------------------------------------------
1 Abc Efg
2 Hij-Klm
3 Nopq(3 行受影响)
*/
------------------------------------------------------------------------
-- Author: happyflystone
-- Date : 2009-03-16 10:35:16
-- Ver: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86)
-- Apr 14 2006 01:12:25
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
--
-------------------------------------------------------------------------- Test Data: ta
IF OBJECT_ID('ta') IS NOT NULL
DROP TABLE ta
Go
CREATE TABLE ta(id INT,name NVARCHAR(7))
Go
INSERT INTO ta
SELECT 1,'aBC' UNION ALL
SELECT 2,'hij-klm' UNION ALL
SELECT 3,'NOPQ'
GO
--Start
create function f_s(@s nvarchar(20))
returns varchar(20)
as
begin
set @s = lower(@s)
declare @I int
set @I = 1
while right(left(@s,@i),1) in (' ','-')
set @I = @I + 1
return left(@s,@I -1) + char(ascii(substring(@s,@i,1))- 32)+ right(@s,len(@s) -@i)
end
go
SELECT
*,dbo.f_s(name)
FROM
TA
drop function f_s
--Result:
/*
id name
----------- ------- --------------------
1 aBC Abc
2 hij-klm Hij-klm
3 NOPQ Nopq
*/
--End
字段类型是 text/ntext 吧 ?