Quelle est la meilleure façon de mettre en majuscule la première lettre de chaque mot d'une chaîne dans SQL Server.Quelle est la meilleure façon de mettre en majuscule la première lettre de chaque mot d'une chaîne dans SQL Server
Répondre
De http://www.sql-server-helper.com/functions/initcap.aspx
CREATE FUNCTION [dbo].[InitCap] (@InputString varchar(4000))
RETURNS VARCHAR(4000)
AS
BEGIN
DECLARE @Index INT
DECLARE @Char CHAR(1)
DECLARE @PrevChar CHAR(1)
DECLARE @OutputString VARCHAR(255)
SET @OutputString = LOWER(@InputString)
SET @Index = 1
WHILE @Index <= LEN(@InputString)
BEGIN
SET @Char = SUBSTRING(@InputString, @Index, 1)
SET @PrevChar = CASE WHEN @Index = 1 THEN ' '
ELSE SUBSTRING(@InputString, @Index - 1, 1)
END
IF @PrevChar IN (' ', ';', ':', '!', '?', ',', '.', '_', '-', '/', '&', '''', '(')
BEGIN
IF @PrevChar != '''' OR UPPER(@Char) != 'S'
SET @OutputString = STUFF(@OutputString, @Index, 1, UPPER(@Char))
END
SET @Index = @Index + 1
END
RETURN @OutputString
END
GO
Il est un simple/plus petit ici (mais ne fonctionne pas si aucune ligne ne pas les espaces, « paramètre de longueur non valide transmis à la fonction DROITE. »):
une variante de celui que je sers depuis un certain temps est:
CREATE FUNCTION [widget].[properCase](@string varchar(8000)) RETURNS varchar(8000) AS
BEGIN
SET @string = LOWER(@string)
DECLARE @i INT
SET @i = ASCII('a')
WHILE @i <= ASCII('z')
BEGIN
SET @string = REPLACE(@string, ' ' + CHAR(@i), ' ' + CHAR(@i-32))
SET @i = @i + 1
END
SET @string = CHAR(ASCII(LEFT(@string, 1))-32) + RIGHT(@string, LEN(@string)-1)
RETURN @string
END
Vous pouvez facilement modifier pour gérer les caractères après les éléments autres que des espaces si vous le souhaitez.
Une autre solution sans utiliser la boucle - approche basée sur le jeu pur avec CTE récursive
create function [dbo].InitCap (@value varchar(max))
returns varchar(max) as
begin
declare
@separator char(1) = ' ',
@result varchar(max) = '';
with r as (
select value, cast(null as varchar(max)) [x], cast('' as varchar(max)) [char], 0 [no] from (select rtrim(cast(@value as varchar(max))) [value]) as j
union all
select right(value, len(value)-case charindex(@separator, value) when 0 then len(value) else charindex(@separator, value) end) [value]
, left(r.[value], case charindex(@separator, r.value) when 0 then len(r.value) else abs(charindex(@separator, r.[value])-1) end) [x]
, left(r.[value], 1)
, [no] + 1 [no]
from r where value > '')
select @result = @result +
case
when ascii([char]) between 97 and 122
then stuff(x, 1, 1, char(ascii([char])-32))
else x
end + @separator
from r where x is not null;
set @result = rtrim(@result);
return @result;
end
Voici le code à une ligne simple.
select
LEFT(column, 1)+ lower(RIGHT(column, len(column)-1))
from [tablename]
Notez, chaque colonne doit être rognée d'espaces ou cette casse. – JohnnyBizzle
Aussi, vous ne faites pas Upper sur la première lettre. – JohnnyBizzle
Ceci met uniquement en majuscule la première lettre de la colonne – slayernoah
Vous devriez essayer au lieu
Select INITCAP(column_name) from table_name;
Cela Capitaliser la première lettre d'entrées mentionnées attributs.
En fonction de table d'une valeur:
CREATE FUNCTION dbo.InitCap(@v AS VARCHAR(MAX))
RETURNS TABLE
AS
RETURN
WITH a AS (
SELECT (
SELECT UPPER(LEFT(value, 1)) + LOWER(SUBSTRING(value, 2, LEN(value))) AS 'data()'
FROM string_split(@v, ' ')
FOR XML PATH (''), TYPE) ret)
SELECT CAST(a.ret AS varchar(MAX)) ret from a
GO
Notez que string_split
nécessite COMPATIBILITY_LEVEL
130.
BEGIN
DECLARE @string varchar(100) = 'asdsadsd asdad asd'
DECLARE @ResultString varchar(200) = ''
DECLARE @index int = 1
DECLARE @flag bit = 0
DECLARE @temp varchar(2) = ''
WHILE (@Index <LEN(@string)+1)
BEGIN
SET @temp = SUBSTRING(@string, @Index-1, 1)
--select @temp
IF @temp = ' ' OR @index = 1
BEGIN
SET @ResultString = @ResultString + UPPER(SUBSTRING(@string, @Index, 1))
END
ELSE
BEGIN
SET @ResultString = @ResultString + LOWER(SUBSTRING(@string, @Index, 1))
END
SET @Index = @Index+ 1--increase the index
END
SELECT @ResultString
FIN
Façon très simple de mettre en majuscule le premier caractère dans SQL Server –
- 1. ASP.Net - Comment mettre en majuscule la première lettre du mois dans la culture PT-BR?
- 2. Quelle est la meilleure façon de déterminer si un caractère est une lettre dans VB6?
- 3. Quelle est la meilleure façon de gérer un grand nombre de tables dans MS SQL Server?
- 4. Quelle est la meilleure façon de stocker des données d'historique dans SQL Server 2005/2008?
- 5. SQL Server - Quelle est la meilleure façon de changer un type de données PK?
- 6. Quelle est la meilleure façon de vérifier l'existence d'une connexion dans SQL Server 2005
- 7. Quelle est la meilleure façon de gérer cette contrainte dans SQL Server 2005?
- 8. Quelle est la meilleure façon d'implémenter la journalisation lors de transactions dans T-SQL?
- 9. Quelle est la meilleure façon de déterminer si une table temporaire existe dans SQL Server?
- 10. Quelle est la meilleure façon de mettre en œuvre une machine d'état de l'interface utilisateur?
- 11. Quelle est la meilleure façon de couper une chaîne en morceaux d'une longueur donnée dans Ruby?
- 12. Flex: Majuscule les mots dans une chaîne?
- 13. Quelle est la meilleure façon d'implémenter cette requête SQL?
- 14. Quelle est la meilleure façon de "mettre en carré" une image dans .NET?
- 15. Quelle est la meilleure façon de mettre à l'échelle un octet de façon uniforme?
- 16. System.Xml.XmlDocument, quelle est la meilleure façon de mettre en cache une DTD de dépendance externe?
- 17. Quelle est la meilleure façon de mettre en cache des fichiers en php?
- 18. Quelle est la meilleure façon d'effectuer des calculs sur une date planifiée dans SQL Server?
- 19. Quelle est la meilleure façon de déboguer un Oracle SP?
- 20. Quelle est la meilleure façon de mettre à jour une table MsAccess dans .NET
- 21. Quelle est la meilleure façon de lire les données CSV?
- 22. Quelle est la meilleure façon de dupliquer fork() dans Windows?
- 23. Quelle est la meilleure façon d'avoir de longs littéraux de chaîne en Javascript?
- 24. Quelle est la meilleure façon de convertir TBytes (UTF-16) en une chaîne?
- 25. Quelle est la meilleure façon de créer des déploiements ClickOnce
- 26. Quelle est la meilleure façon de mettre en évidence un champ obligatoire sur un formulaire Web?
- 27. Quelle est la meilleure façon d'ajouter des guillemets doubles dans SQL Server 2000
- 28. Quelle est la meilleure façon de déboguer un écrasement explorer.exe?
- 29. La meilleure façon de rechercher dans les données stockées au format XML dans SQL Server?
- 30. Quelle est la meilleure façon de formater C# dans WordPress?
Est-ce que cela a à faire dans SQL Server? Ce n'est pas quelque chose que j'associerais avec un serveur de base de données, mais quelque chose fait par validation de formulaire ou même une vue. –
Utilisateurs de PostgreSQL: UPDATE [table] SET your_col = initcap (lower (your_col)); Ce n'est pas une question Postgre, mais il apparaît d'abord dans google indépendamment. –