Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как найти все строки которые начинаются с русской маленькой буквы  [new]
Int23
Guest
Как такое сделать в скл?
28 сен 12, 20:58    [13241229]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
step_ks
Member

Откуда:
Сообщений: 936
like + , возможно, collate
28 сен 12, 21:02    [13241249]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31439
Int23
Как такое сделать в скл?
where name like '[а-я]%' collate Cyrillic_General_CS_AS
28 сен 12, 21:03    [13241262]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
Int23
Guest
Спасибо большое
28 сен 12, 21:09    [13241291]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
select 1 where 'А' like '[а-я]%' collate Cyrillic_General_CS_AS;
select 1 where 'А' like '[а-я]%' collate Cyrillic_General_BIN;
28 сен 12, 21:19    [13241367]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
VAlexey
Member

Откуда:
Сообщений: 130
Только учтите, что:
select 1 where 'ё' like '[а-я]%' collate Cyrillic_General_BIN;


так что лучше
select 1 where 'ё' like '[а-яё]%' collate Cyrillic_General_BIN;
1 окт 12, 16:24    [13250797]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
VAlexey
Только учтите, что:
select 1 where 'ё' like '[а-я]%' collate Cyrillic_General_BIN;


так что лучше
select 1 where 'ё' like '[а-яё]%' collate Cyrillic_General_BIN;
Ещё лучше не ипользовать диапазоны, а тупо перечислить все буквы в явном виде.
Их же совсем немного.
1 окт 12, 16:31    [13250867]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Так зачем же этот BIN предлагать?:
select 1 where 'ё' like '[а-я]%' collate Cyrillic_General_CS_AS;
select 1 where 'ё' like '[а-я]%' collate Cyrillic_General_BIN;
1 окт 12, 16:43    [13250980]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
для тупых
Guest
select 1 where 'А' like '[а-я]%' collate Cyrillic_General_CI_AS;
select 1 where 'А' like '[а-я]%' collate Cyrillic_General_CS_AS;
select 1 where 'А' like '[а-я]%' collate Cyrillic_General_BIN;

у меня во всех 3-х случаях выдается единица.
почему?
а вроде пишут, что LIKE comparisons are affected by collation.
1 окт 12, 16:52    [13251081]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
LIKE '%[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]%'
, и не очем беспокоиться!
1 окт 12, 16:56    [13251120]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
для тупых
select 1 where 'А' like '[а-я]%' collate Cyrillic_General_CI_AS;
select 1 where 'А' like '[а-я]%' collate Cyrillic_General_CS_AS;
select 1 where 'А' like '[а-я]%' collate Cyrillic_General_BIN;

у меня во всех 3-х случаях выдается единица.
почему?
а вроде пишут, что LIKE comparisons are affected by collation.
SELECT number, CHAR(number) symbol
FROM master.dbo.spt_values
WHERE type='P' AND number BETWEEN 32 AND 255
ORDER BY CHAR(number) collate Cyrillic_General_CS_AS;
Своеобразный порядок, правда!
И регистронезависимость тут не при чём.
1 окт 12, 17:01    [13251157]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
для тупых
Guest
select 1 where 'А' LIKE '%[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]%' ;

у меня и вот это выдает 1 с любым из перечисленных 3-х collation
ПОЧЕМУ???
1 окт 12, 17:02    [13251163]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Это invm проказник, издевается. C остальными.

Я понял каждый первый день второго месяца (или только весны/осень) - "день дурака".
1 окт 12, 17:03    [13251175]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
А если вот так
SELECT number, CHAR(number) symbol
FROM master.dbo.spt_values
WHERE type='P' AND number BETWEEN 32 AND 255
ORDER BY CHAR(number) collate Cyrillic_General_CI_AS;
, то а и А поменялись местами!!
Значит, и поиск по диапазону будет другим.
1 окт 12, 17:03    [13251177]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
iap
А если вот так
SELECT number, CHAR(number) symbol
FROM master.dbo.spt_values
WHERE type='P' AND number BETWEEN 32 AND 255
ORDER BY CHAR(number) collate Cyrillic_General_CI_AS;
, то а и А поменялись местами!!
Значит, и поиск по диапазону будет другим.
Хотя, в ход идёт уже регистронезависимость...
1 окт 12, 17:04    [13251187]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
для тупых
Guest
люди, какой еще день дурака, у меня ни код
SELECT number, CHAR(number) symbol
FROM master.dbo.spt_values
WHERE type='P' AND number BETWEEN 32 AND 255
ORDER BY CHAR(number) collate Cyrillic_General_CI_AS;

ни
SELECT number, NCHAR(number) symbol
FROM master.dbo.spt_values
WHERE type='P' AND number BETWEEN 32 AND 255
ORDER BY NCHAR(number) collate Cyrillic_General_CI_AS;

вообще кириллицу не дают.
и наверное оно даже понятно.
у меня код. страница 1252

НО ни один из предложенных в топике вариантов не фильтрует мне
"строки которые начинаются с русской маленькой буквы "
1 окт 12, 17:10    [13251231]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
для тупых
люди, какой еще день дурака, у меня ни код
SELECT number, CHAR(number) symbol
FROM master.dbo.spt_values
WHERE type='P' AND number BETWEEN 32 AND 255
ORDER BY CHAR(number) collate Cyrillic_General_CI_AS;

ни
SELECT number, NCHAR(number) symbol
FROM master.dbo.spt_values
WHERE type='P' AND number BETWEEN 32 AND 255
ORDER BY NCHAR(number) collate Cyrillic_General_CI_AS;

вообще кириллицу не дают.
и наверное оно даже понятно.
у меня код. страница 1252

НО ни один из предложенных в топике вариантов не фильтрует мне
"строки которые начинаются с русской маленькой буквы "
Ща я предложу железный по надёжности предикат! Вот:
WHERE NAME LIKE '[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]%'
1 окт 12, 17:13    [13251252]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
для тупых
Guest
а, и вот только в таком виде:
select 1 where N'А' collate Cyrillic_General_CI_AS like N'[а-я]%' collate Cyrillic_General_CI_AS;
select 1 where N'А' collate Cyrillic_General_CS_AS like N'[а-я]%' collate Cyrillic_General_CS_AS;
select 1 where N'А' collate Cyrillic_General_BIN like N'[а-я]%' collate Cyrillic_General_BIN;


канает 3-ий вариант, именно с Cyrillic_General_BIN
1 окт 12, 17:14    [13251262]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
для тупых
Guest
select 1 where N'А'  LIKE '[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]%'
select 1 where N'А'  like '[а-я]%' collate Cyrillic_General_CS_AS;

select 1 where N'А'  LIKE N'[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]%'
select 1 where N'А'  like N'[а-я]%' collate Cyrillic_General_CS_AS;


хрень какая-то.
первые два выдают пустое,
последние два выдают 1.

почему не наоборот-то?
1 окт 12, 17:21    [13251325]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
для тупых
а, и вот только в таком виде:
select 1 where N'А' collate Cyrillic_General_CI_AS like N'[а-я]%' collate Cyrillic_General_CI_AS;
select 1 where N'А' collate Cyrillic_General_CS_AS like N'[а-я]%' collate Cyrillic_General_CS_AS;
select 1 where N'А' collate Cyrillic_General_BIN like N'[а-я]%' collate Cyrillic_General_BIN;


канает 3-ий вариант, именно с Cyrillic_General_BIN
Здесь неоднократно отмечалось, что Cyrillic_General_BIN для юникода глючит (неправильно определяет размер первого символа),
канает Cyrillic_General_BIN2
1 окт 12, 17:28    [13251399]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
для тупых
select 1 where N'А'  LIKE '[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]%'
select 1 where N'А'  like '[а-я]%' collate Cyrillic_General_CS_AS;

select 1 where N'А'  LIKE N'[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]%'
select 1 where N'А'  like N'[а-я]%' collate Cyrillic_General_CS_AS;


хрень какая-то.
первые два выдают пустое,
последние два выдают 1.

почему не наоборот-то?
Какой COLLATE у вашей базы по-умолчанию?
1 окт 12, 17:28    [13251405]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
для тупых,

давно замечено, что сервер с трудом преобразует литеральные неюникодные строки в юникодные неявно (без лидирующего 'N').
Так что первые два примера не показательны.
1 окт 12, 17:31    [13251450]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
для тупых
Guest
SQL_Latin1_General_CP1_CI_AS
1 окт 12, 17:32    [13251459]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
для тупых
Guest
iap
для тупых,

давно замечено, что сервер с трудом преобразует литеральные неюникодные строки в юникодные неявно (без лидирующего 'N').
Так что первые два примера не показательны.


ну так а последние 2 чем лучше?
сравниваю юникод с юникодом, указываю CaseSensitive,
чего же мне единицу-то выдает?
1 окт 12, 17:35    [13251492]     Ответить | Цитировать Сообщить модератору
 Re: Как найти все строки которые начинаются с русской маленькой буквы  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
для тупых
SQL_Latin1_General_CP1_CI_AS
Значит, 3-й запрос тоже совершенно понятен.
А четвёртый объясняется особенностями COLLATE:
SELECT number, NCHAR(number) symbol
FROM master.dbo.spt_values
WHERE type='P' AND number BETWEEN 32 AND 255
ORDER BY NCHAR(number) collate Cyrillic_General_CS_AS;
1 окт 12, 17:36    [13251504]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить