2014-09-29 3 views
0

Я число строк в SQLite, каждая строка имеет один столбец, который содержит такие данные:Regex: Как удалить английские слова из предложений с помощью Regex?

prosperکامیاب شدن ، موفق شدن ، رونق یافتن 

Как вы можете видеть, предложение начинается с английскими словами, теперь я хочу, чтобы удалить английские слова на первом каждого предложения. Есть ли способ сделать это с помощью запроса T-SQL (используя Regex)?

+0

Я не знаком с T-SQL и регулярное выражение его implemetns, но, возможно, я могу попытаться направить вас в Rigth после быстрой битвы. регулярное выражение, чтобы найти любые символы, которые не находятся в латинском A-z, будет чем-то вроде '[^ a-zA-Z]'. Похоже, что T-SQL Regex не поддерживает начало сопоставления строк ('^'), но обычно я бы соответствовал началу строки, чтобы начать поиск первого слова в строке. Не полный ответ, но, возможно, это даст вам место для начала. – Stephen

+0

Возможно, посмотрите на определение набора символов, который вы хотите сохранить, а затем сопоставьте один или несколько символов, не входящих в этот набор. Таким образом, вы также заберете слова на французском или кандзи или дингбатах и ​​т. Д. В любом случае, диапазон символов, которые вы хотите, вероятно, лучше известен, чем множество вещей, которые вы не хотите. –

+1

английские слова? Вам нужно будет использовать английский словарь. Можно попытаться удалить латинские символы 1. – sln

ответ

1

вы можете попробовать это :) Я сделал это в качестве функции призвать

create function dbo.RemoveEngChars (@Unicode_string nvarchar(max)) 
returns nvarchar(max) as 
begin 
declare @i int = 1; -- must start from 1, as SubString is 1-based 
declare @OriginalString nvarchar(100) = @Unicode_string collate SQL_Latin1_General_Cp1256_CS_AS 
declare @ModifiedString nvarchar(100) = N''; 

while @i <= Len(@OriginalString) 
    begin 
    if SubString(@OriginalString, @i, 1) not like '[a-Z]' 
    begin 
     set @ModifiedString = @ModifiedString + SubString(@OriginalString, @i, 1); 
    end 
    set @i = @i + 1; 
    end 
return @ModifiedString 
end 

--To call the function , you can run the following script and pass the Unicode in N' prefix 
select dbo.RemoveEngChars(N'prosperکامیاب شدن ، موفق شدن ، رونق یافتن') 
Смежные вопросы