我刚才有这个问题,并想知道是否可以通过SQL查询实现
我在我的数据库名称字段中有 - SAM MATHEWS M,我希望将其转换为
Sam Mathews M
有没有办法通过SQL查询实现这一点。我知道编写一个PHP代码来遍历字符,但需要知道这是否可能...
感谢, 塞缪尔马修斯。
答案 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,请与您的开发人员联系。说话解决了很多问题。
我的解决方案:在您的视图中执行此操作。保持数据库的独立性,而不仅仅是美学。