使用sql查询来大写字段

时间:2014-04-28 06:15:05

标签: sql uppercase

我刚才有这个问题,并想知道是否可以通过SQL查询实现

我在我的数据库名称字段中有 - SAM MATHEWS M,我希望将其转换为

Sam Mathews M

有没有办法通过SQL查询实现这一点。我知道编写一个PHP代码来遍历字符,但需要知道这是否可能...

感谢, 塞缪尔马修斯。

3 个答案:

答案 0 :(得分:1)

您没有告诉我们您使用的是哪个数据库。

所以 PostgreSQL Oracle 都有大写方法initcap

-- PostgreSQL
select initcap('SAM MATHEWS M')

-- Oracle
select initcap('SAM MATHEWS M') from dual

这将打印预期结果

Sam Mathews M

对于 SQLServer ,似乎没有这么简单的解决方案,您必须使用UDF:SQL: capitalize first letter only

答案 1 :(得分:0)

我知道这很恶心,并且在很大程度上不是通用的,但我认为没有其他的解决方法

declare @string as nvarchar(20) = 'SAM MATHEWS M'
declare @1 as nvarchar(20) = PARSENAME(REPLACE(@string, ' ', '.'), 1)
declare @2 as nvarchar(20) = PARSENAME(REPLACE(@string, ' ', '.'), 2)
declare @3 as nvarchar(20) = PARSENAME(REPLACE(@string, ' ', '.'), 3)

SELECT Upper(left(@3,1)) + LOWER(RIGHT(@3,LEN(@3)-1))
+ ' '
+ Upper(left(@2,1)) + LOWER(RIGHT(@2,LEN(@2)-1))
+' '
+Upper(left(@1,1)) + LOWER(RIGHT(@1,LEN(@1)-1))

这适用于MsSql服务器

答案 2 :(得分:0)

这是一个错误的问题。您要求您的数据库执行您的视图应该在您的Web应用程序(或您正在设计的任何客户端)中执行的操作。

如果您是DBA,请与您的开发人员联系。说话解决了很多问题。

我的解决方案:在您的视图中执行此操作。保持数据库的独立性,而不仅仅是美学。