[ad_1]
こんにちは、
2つの列を単一の列として追加することにより、データベースからデータをフェッチしています。フェッチされた列には、単語の間に多くのスペースがあるため、単一のスペースを除いてスペースを削除する方法、
私のクエリは次のようになります。
SQL
select Pers_FirstName + Pers_LastName as Name from Person inner join PhoneLink on Pers_PersonId=PLink_RecordID inner join Phone on Phon_PhoneId=PLink_PhoneId and Phon_Number='6983000';
出力:
名前
ピーター・ジャクソン
前もって感謝します。
編集:タイプミス
解決策 2
キングフィッシャーの答えに追加するには、複数のスペースが単一のテキスト列内にある場合、および/または単一のスペースを残したい場合は、次を使用します 交換[^] 関数。 次の例を検討してください
SQL
SELECT REPLACE('A B' , ' ', ' '); SELECT REPLACE('A B' , ' ', ' ');;
問題は、2 つ以上のスペースがある場合、REPLACE は二重のスペースを 1 回だけ置換することです。 このために、小さな UDF を作成するか、必要な回数だけ REPLACE を繰り返すことができます。 例えば
SQL
SELECT REPLACE( REPLACE( REPLACE('A B', ' ', ' '), ' ', ' '), ' ', ' ');
解決策 3
解決策 2 提供者 ミカ・ウェンデリウス[^] とても良い。 私は使用することを提案します CTE[^]:
SQL
DECLARE @tmp TABLE(MyText VARCHAR(500)) INSERT INTO @tmp (MyText) VALUES('This is very strange text...'), ('This is another very strange text.'), ('This is very stupid text !!!') DECLARE @words TABLE(RowNo INT, PartNo INT, MyWord VARCHAR(255)) ;WITH CTE AS ( SELECT ROW_NUMBER() OVER(ORDER BY MyText) AS RowNo, 1 AS PartNo, LEFT(LTRIM(MyText), CHARINDEX(' ', LTRIM(MyText))-1) AS MyWord, RIGHT(LTRIM(MyText), LEN(LTRIM(MyText)) - CHARINDEX(' ', LTRIM(MyText))) AS Remainder FROM @tmp WHERE CHARINDEX(' ', LTRIM(MyText))>0 UNION ALL SELECT RowNo, PartNo + 1 AS PartNo, LEFT(LTRIM(Remainder), CHARINDEX(' ', LTRIM(Remainder))-1) AS MyWord, RIGHT(LTRIM(Remainder), LEN(LTRIM(Remainder)) - CHARINDEX(' ', LTRIM(Remainder))) AS Remainder FROM CTE WHERE CHARINDEX(' ', LTRIM(Remainder))>0 UNION ALL SELECT RowNo, PartNo + 1 AS PartNo, LTRIM(Remainder) AS MyWord, NULL AS Remainder FROM CTE WHERE CHARINDEX(' ', LTRIM(Remainder))=0 ) INSERT INTO @words (RowNo, PartNo, MyWord) SELECT RowNo, PartNo, RTRIM(LTRIM(MyWord)) AS MyWord FROM CTE ORDER BY RowNo, PartNo --SELECT * --FROM @words --ORDER BY RowNo, PartNo SELECT DISTINCT t2.RowNo, ( SELECT t1.MyWord + ' ' AS [text()] From @words AS t1 Where t1.RowNo = t2.RowNo ORDER BY t1.PartNo For XML PATH ('') ) AS MySentence From @words AS t2
結果:
RowNo MySentence 1 This is very strange text... 2 This is very stupid text !!! 3 This is another very strange text.
解決策 1
[ad_2]
コメント