Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
СтраждущийТоварищЪ
Guest
Кроме как варианта нахождения каждого из символов функцией CHARINDEX ?
18 ноя 13, 11:25    [15146831]     Ответить | Цитировать Сообщить модератору
 Re: Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
Glory
Member

Откуда:
Сообщений: 104760
СтраждущийТоварищЪ
Кроме как варианта нахождения каждого из символов функцией CHARINDEX ?

Использовать сравнение на равенство ?
18 ноя 13, 11:28    [15146852]     Ответить | Цитировать Сообщить модератору
 Re: Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
СтраждущийТоварищЪ
Guest
Не равенство строк, а равенство содержащихся в них наборах символов.
18 ноя 13, 11:31    [15146872]     Ответить | Цитировать Сообщить модератору
 Re: Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
Glory
Member

Откуда:
Сообщений: 104760
СтраждущийТоварищЪ
Не равенство строк, а равенство содержащихся в них наборах символов.

А как могут быть не равны символы строк, если строки равны ???
18 ноя 13, 11:32    [15146881]     Ответить | Цитировать Сообщить модератору
 Re: Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
СтраждущийТоварищЪ
Guest
Строки

abbbvvc и bavc равны

а строки

abc и abcd нет.
18 ноя 13, 11:35    [15146896]     Ответить | Цитировать Сообщить модератору
 Re: Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Вы можете создать таблицу символов предварительно. Чтобы не парсить строки каждый раз.
18 ноя 13, 11:39    [15146911]     Ответить | Цитировать Сообщить модератору
 Re: Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
СтраждущийТоварищЪ
Guest
Я пробовал сделать так.

DECLARE @T Table(a char(10))

Insert into @T values ('abc'),('bca'),('abcd')

Select
a,
iif( CHARINDEX(a,'a')>0, power(2,1),0) +
iif( CHARINDEX(a,'b')>0, power(2,2),0) +
iif( CHARINDEX(a,'c')>0, power(2,3),0) +
iif( CHARINDEX(a,'d')>0, power(2,4),0) rng
from @T

Ну а дальше проверить на равенство. Но это при условию что я знаю сколько символов и что их не так уж и много.
И, собственно как то то это кривовато.
Да и для набора например из 256 символов не прокатит.
18 ноя 13, 11:46    [15146945]     Ответить | Цитировать Сообщить модератору
 Re: Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5975
СтраждущийТоварищЪ,

Разбить каждую строку на символы при помощи рекурсивного CTE, получившиеся выборки перечь INTERSECT'ом, объём получившийся выборки должен быть равен объему посимвольной выборки от каждой из строк. Как-то так.
18 ноя 13, 11:49    [15146964]     Ответить | Цитировать Сообщить модератору
 Re: Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
СтраждущийТоварищЪ
Guest
2Сон Веры Павловны

Угу, пожалуй ничего лучше и не придумать :-(.
18 ноя 13, 11:52    [15146981]     Ответить | Цитировать Сообщить модератору
 Re: Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
Glory
Member

Откуда:
Сообщений: 104760
СтраждущийТоварищЪ
Угу, пожалуй ничего лучше и не придумать


select substring(b.a, a.number, 1)
from Numbers a inner join @T b on a.number <= len(b.a)
18 ноя 13, 11:55    [15146997]     Ответить | Цитировать Сообщить модератору
 Re: Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
aleks2
Guest
Сон Веры Павловны
Разбить каждую строку на символы при помощи рекурсивного CTE, получившиеся выборки перечь INTERSECT'ом, объём получившийся выборки должен быть равен объему посимвольной выборки от каждой из строк. Как-то так.


Рекурсивный CTE - шоб медленнее работало?
18 ноя 13, 11:56    [15147001]     Ответить | Цитировать Сообщить модератору
 Re: Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Сон Веры Павловны
Разбить каждую строку на символы при помощи рекурсивного CTE таблицы натуральных чисел
18 ноя 13, 12:00    [15147019]     Ответить | Цитировать Сообщить модератору
 Re: Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
СтраждущийТоварищЪ
Guest
Там даже не проблема в медленно/быстро. А в том, насколько это будет все громоздко.
18 ноя 13, 12:00    [15147022]     Ответить | Цитировать Сообщить модератору
 Re: Как проще всего проверить, что строки состоят из одних и тех же символов.  [new]
СтраждущийТоварищЪ
Guest
СтраждущийТоварищЪ
Угу, пожалуй ничего лучше и не придумать


select substring(b.a, a.number, 1)
from Numbers a inner join @T b on a.number <= len(b.a)



Ага, именно оно :). Спасибо огромное :)
18 ноя 13, 12:05    [15147053]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить