[SQL] SQL은 : 첫 글자를 대문자 만 [중복]
SQLSQL은 : 첫 글자를 대문자 만 [중복]
나는 각 단어의 첫 글자를 대문자로 SQL 문이 필요합니다. 다른 문자는 소문자로해야한다.
단어는 다음과 같이 할 수있다 :
wezembeek-oppem
roeselare
BRUGGE
louvain-la-neuve
어떤 될 것이다 :
Wezembeek-Oppem
Roeselare
Brugge
Louvain-La-Neuve
이 UPDATE 문으로해야한다, 나는 열의 데이터를 업데이트 할 수 있습니다. 내가 SQL 초보자 해요, 사전에 귀하의 답변 대단히 감사합니다.
해결법
-
==============================
1.당신은 열 내부의 데이터를 컬럼 자체의 이름을 바꾸거나 투자를 요구하고 있습니까? 당신이 변화했습니다 데이터, 다음이를 사용 :
당신은 열 내부의 데이터를 컬럼 자체의 이름을 바꾸거나 투자를 요구하고 있습니까? 당신이 변화했습니다 데이터, 다음이를 사용 :
UPDATE [yourtable] SET word=UPPER(LEFT(word,1))+LOWER(SUBSTRING(word,2,LEN(word)))
당신은 단지에만 표시를 변경을 원하고 할 경우 변화에 테이블의 실제 데이터를 필요로하지 :
SELECT UPPER(LEFT(word,1))+LOWER(SUBSTRING(word,2,LEN(word))) FROM [yourtable]
도움이 되었기를 바랍니다.
편집 : 나는에 대해 실현 '-'그래서 여기에 함수에서이 문제를 해결하는 나의 시도이다.
CREATE FUNCTION [dbo].[CapitalizeFirstLetter] ( --string need to format @string VARCHAR(200)--increase the variable size depending on your needs. ) RETURNS VARCHAR(200) AS BEGIN --Declare Variables DECLARE @Index INT, @ResultString VARCHAR(200)--result string size should equal to the @string variable size --Initialize the variables SET @Index = 1 SET @ResultString = '' --Run the Loop until END of the string WHILE (@Index <LEN(@string)+1) BEGIN IF (@Index = 1)--first letter of the string BEGIN --make the first letter capital SET @ResultString = @ResultString + UPPER(SUBSTRING(@string, @Index, 1)) SET @Index = @Index+ 1--increase the index END -- IF the previous character is space or '-' or next character is '-' ELSE IF ((SUBSTRING(@string, @Index-1, 1) =' 'or SUBSTRING(@string, @Index-1, 1) ='-' or SUBSTRING(@string, @Index+1, 1) ='-') and @Index+1 <> LEN(@string)) BEGIN --make the letter capital SET @ResultString = @ResultString + UPPER(SUBSTRING(@string,@Index, 1)) SET @Index = @Index +1--increase the index END ELSE-- all others BEGIN -- make the letter simple SET @ResultString = @ResultString + LOWER(SUBSTRING(@string,@Index, 1)) SET @Index = @Index +1--incerase the index END END--END of the loop IF (@@ERROR <> 0)-- any error occur return the sEND string BEGIN SET @ResultString = @string END -- IF no error found return the new string RETURN @ResultString END
그럼 코드는 다음과 같습니다
UPDATE [yourtable] SET word=dbo.CapitalizeFirstLetter([STRING TO GO HERE])
-
==============================
2.아래의 함수를 만듭니다
아래의 함수를 만듭니다
Alter FUNCTION InitialCap(@String VARCHAR(8000)) RETURNS VARCHAR(8000) AS BEGIN DECLARE @Position INT; SELECT @String = STUFF(LOWER(@String),1,1,UPPER(LEFT(@String,1))) COLLATE Latin1_General_Bin, @Position = PATINDEX('%[^A-Za-z''][a-z]%',@String COLLATE Latin1_General_Bin); WHILE @Position > 0 SELECT @String = STUFF(@String,@Position,2,UPPER(SUBSTRING(@String,@Position,2))) COLLATE Latin1_General_Bin, @Position = PATINDEX('%[^A-Za-z''][a-z]%',@String COLLATE Latin1_General_Bin); RETURN @String; END ;
다음과 같이 호출
select dbo.InitialCap(columnname) from yourtable
-
==============================
3.기능을 사용하지 않고 쿼리를 확인하시기 바랍니다 :
기능을 사용하지 않고 쿼리를 확인하시기 바랍니다 :
declare @T table(Insurance varchar(max)) insert into @T values ('wezembeek-oppem') insert into @T values ('roeselare') insert into @T values ('BRUGGE') insert into @T values ('louvain-la-neuve') select ( select upper(T.N.value('.', 'char(1)'))+ lower(stuff(T.N.value('.', 'varchar(max)'), 1, 1, ''))+(CASE WHEN RIGHT(T.N.value('.', 'varchar(max)'), 1)='-' THEN '' ELSE ' ' END) from X.InsXML.nodes('/N') as T(N) for xml path(''), type ).value('.', 'varchar(max)') as Insurance from ( select cast('<N>'+replace( replace( Insurance, ' ', '</N><N>'), '-', '-</N><N>')+'</N>' as xml) as InsXML from @T ) as X
-
==============================
4.
select replace(wm_concat(new),',','-') exp_res from (select distinct initcap(substr(name,decode(level,1,1,instr(name,'-',1,level-1)+1),decode(level,(length(name)-length(replace(name,'-','')))+1,9999,instr(name,'-',1,level)-1-decode(level,1,0,instr(name,'-',1,level-1))))) new from table; connect by level<= (select (length(name)-length(replace(name,'-','')))+1 from table));
from https://stackoverflow.com/questions/15290754/sql-capitalize-first-letter-only by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 정체성 대 순서 (0) | 2020.05.08 |
---|---|
[SQL] T-SQL에서 정렬 된 테이블에서 행 M부터 N 행을 얻는 방법 (0) | 2020.05.08 |
[SQL] 어떻게 순수한 SQL에 LINQ의 .Skip (1000) .Take (100)을 작성하려면 어떻게해야합니까? (0) | 2020.05.07 |
[SQL] SQL 쿼리는 최소값과 별개의 행을 선택합니다 (0) | 2020.05.07 |
[SQL] IF NOT SQLite는 존재 할 방법 (0) | 2020.05.07 |