2009-12-08 9 views
9

मैं SQL सर्वर MSDE 2000 का उपयोग कर रहा हूं। मेरे पास notes प्रकार nvarchar (65) नामक फ़ील्ड है।फ़ील्ड सामग्री में पीछे खाली स्थान निकालें

सामग्री सभी रिकॉर्ड्स में सामग्री (स्पष्टता के लिए उद्धरण) के बाद अतिरिक्त स्थान के साथ 'कुछ' है। मैंने निम्नलिखित कमांड का इस्तेमाल किया।

UPDATE TABLE1 
    SET notes = RTRIM(LTRIM(notes)) 

लेकिन यह काम नहीं करता है। क्या ऐसा करने का कोई वैकल्पिक तरीका है?

+2

आप "काम नहीं करता है" क्या मतलब है? यह चाहिए .... –

+0

कोई यकीन नहीं है। क्वेरी ठीक से निष्पादित हो जाती है और मुझे संदेश मिलता है '(12539 पंक्तियां प्रभावित)'। लेकिन क्षेत्र में अभी भी पिछली जगह के साथ मूल्य है। – bdhar

+0

आप सही सर्वर उदाहरण, तालिका देख रहे हैं ?? मैंने पहले किया था ... –

उत्तर

10

क्या आप वाकई क्वेरी काम नहीं कर रहे हैं? प्रयास करें:

SELECT TOP 100 '~'+ t.notes +'~' 
    FROM TABLE1 t 

TOP 100 पहली 100 पंक्तियों के लिए परिणामों को सीमित कर देगा, वहाँ वास्तव में उत्पादन में कोई रिक्ति है यदि पर्याप्त एक विचार प्राप्त करने के लिए। यदि वहां है, और आरटीआरआईएम/एलटीआरआईएम इसे हटा नहीं रहा है - तो आप एक व्हाइटस्पेस चरित्र से निपट नहीं रहे हैं। उस मामले में, कोशिश:

UPDATE TABLE1 
    SET notes = REPLACE(notes, 
         SUBSTRING(notes, PATINDEX('%[^a-zA-Z0-9 '''''']%', notes), 1), 
         '') 
WHERE PATINDEX('%[^a-zA-Z0-9 '''''']%', notes) <> 0 
+0

यह एक काम करता है। इस और मैंने जो इस्तेमाल किया है उसके बीच क्या अंतर है? – bdhar

+1

@भारानधरन: यह गैर प्रिंट करने योग्य ASCII वर्ण हटा देता है, जो एलटीआरआईएम/आरटीआरआईएम नहीं करता है। –

+0

ठीक है। गैर-प्रिंट करने योग्य एसीएसआईआई चरित्र क्या है? क्या यह एक खाली जगह से अलग है? – bdhar

1

... या आप सचमुच नकल कर सकता है/अपने को बदलने के बयान में अपनी क्वेरी के परिणाम के रूप पेस्ट खाली '' एक क्षेत्र के अंत में (स्थान) और वहां से सबकुछ अपडेट करें।

update TABLE1 
set notes = replace(notes, ' ', '') 
0

और बस मामले में आप सभी स्तंभों में सभी रिक्त स्थान ट्रिम करने के लिए की जरूरत है, तो आप इसे गतिशील रूप से करने के लिए इस स्क्रिप्ट का उपयोग कर सकते हैं:

--Just change table name 
declare @MyTable varchar(100) 
set @MyTable = 'MyTable' 

--temp table to get column names and a row id 
select column_name, ROW_NUMBER() OVER(ORDER BY column_name) as id into #tempcols from INFORMATION_SCHEMA.COLUMNS 
WHERE DATA_TYPE IN ('varchar', 'nvarchar') and TABLE_NAME = @MyTable 

declare @tri int 
select @tri = count(*) from #tempcols 
declare @i int 
select @i = 0 
declare @trimmer nvarchar(max) 
declare @comma varchar(1) 
set @comma = ', ' 

--Build Update query 
select @trimmer = 'UPDATE [dbo].[' + @MyTable + '] SET ' 

WHILE @i <= @tri 
BEGIN 

    IF (@i = @tri) 
     BEGIN 
     set @comma = '' 
     END 
    SELECT @trimmer = @trimmer + CHAR(10)+ '[' + COLUMN_NAME + '] = LTRIM(RTRIM([' + COLUMN_NAME + ']))'[email protected] 
    FROM #tempcols 
    where id = @i 

    select @i = @i+1 
END 

--execute the entire query 
EXEC sp_executesql @trimmer 

drop table #tempcols 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^