Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 В строке содержатся одинаковые символы  [new]
str_question123
Guest
Как просто, эффективно и без лишнего кода опеределить, что в строке содержатся одинаковые символы. Например 0.
DECLARE
  @str varchar(10) = '000000'

IF @str содержит все 0
  PRINT 'Все нули'
ELSE
  PRINT 'Не все нули'  
15 дек 17, 13:25    [21036693]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
str_question123,

DECLARE @str varchar(10) = '000000'
IF LEN(REPLACE(@str,SUBSTRING(@str,1,1),'')) = 0
	SELECT 'ALL as ' + SUBSTRING(@str,1,1)
15 дек 17, 13:29    [21036711]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
или так
IF @str = REPLICATE(RIGHT(@str, 1), LEN(@str))
15 дек 17, 13:37    [21036741]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
assmsk
Member

Откуда:
Сообщений: 173
Чисто для нулей)

DECLARE @str varchar(10) = '000000'

IF cast(@str as int) = 0

PRINT 'Все нули'
ELSE
PRINT 'Не все нули'
15 дек 17, 13:39    [21036744]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
assmsk
Чисто для нулей)

DECLARE @str varchar(10) = '000000'

IF cast(@str as int) = 0

PRINT 'Все нули'
ELSE
PRINT 'Не все нули'



DECLARE @str varchar(10) = '' --<<<-------- Все нули?

IF cast(@str as int) = 0 
PRINT N'Все нули'
ELSE
PRINT N'Не все нули'
15 дек 17, 13:42    [21036768]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
DECLARE @str varchar(10) = '000000';
SELECT CASE WHEN @str LIKE '0%' AND @str NOT LIKE '%[^0]%' THEN 'Все нули!!' ELSE 'Не все нули!' END;
15 дек 17, 14:04    [21036851]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
aleks222
Guest
DECLARE @str varchar(10) 
  
  set @str = '000000'


IF left(@str, 1) = '0' and @str = substring( @str, 2, 10000) + left(@str, 1)
  PRINT 'Все нули'
ELSE
  PRINT 'Не все нули' 
15 дек 17, 14:37    [21036984]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
str_question123,
автор
Как просто, эффективно и без лишнего кода опеределить, что в строке содержатся одинаковые символы.

Давай-ка, определимся, что ты вкладываешь в понятия "просто", "эффективно" и "без лишнего кода".

Сборку CLR считать лишним кодом? А питоноскрипт? А что такое быстро?


Если рассуждать только в скуль коде, и делать общее решение, а не "000" все нули, то:
- разбить строку на символы "в столбик";
- взять от символов "distinct";
- сравнить количество строк с длиной исходной строки.
15 дек 17, 14:41    [21037005]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
DECLARE @str nvarchar(20) = 'abcdebca'

SELECT DISTINCT CHR 
FROM
(
  SELECT TOP(LEN(@str))  CHR = SUBSTRING(@str, N.Num, 1)   FROM dbo.Numbers N
) Z 
IF @@ROWCOUNT = 
15 дек 17, 14:48    [21037039]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
DECLARE @str nvarchar(20) = 'abcdebca'

SELECT DISTINCT CHR 
FROM
(
  SELECT TOP(LEN(@str))  CHR = SUBSTRING(@str, N.Num, 1)   FROM dbo.Numbers N  /*просто числа от 1  до 4000000000*/
) Z 
IF @@ROWCOUNT = LEN(@str) SELECT 'НЕТ ДУБЛЕЙ' ELSE  SELECT 'ЕСТЬ ДУБЛИ'
15 дек 17, 14:49    [21037042]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Cammomile
str_question123,
автор
Как просто, эффективно и без лишнего кода опеределить, что в строке содержатся одинаковые символы.

Давай-ка, определимся, что ты вкладываешь в понятия "просто", "эффективно" и "без лишнего кода".

Сборку CLR считать лишним кодом? А питоноскрипт? А что такое быстро?


Если рассуждать только в скуль коде, и делать общее решение, а не "000" все нули, то:
- разбить строку на символы "в столбик";
- взять от символов "distinct";
- сравнить количество строк с длиной исходной строки.
Это же ужас какой-то!
DECLARE @str varchar(10) = '000000';
IF @str LIKE '_%' AND @str NOT LIKE '%[^'+LEFT(@str,1)+']%'
PRINT 'Все символы одинаковы!!'
ELSE
PRINT 'Не все символы одинаковы!!';
15 дек 17, 14:57    [21037078]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Ужас, это решать то что сам придумал, место задачи заказчика, чем ты и занимаешься.
Процитирую автора
автор
Как просто, эффективно и без лишнего кода определить, что в строке содержатся одинаковые символы.

Чуешь разницу между "содержаться одинаковые" и "все одинаковые" ?
15 дек 17, 15:10    [21037135]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
Cammomile, вот чем искушенный sql девелопер отличается от конечного автомата... далее в примере заказчика "PRINT 'Все нули'/PRINT 'Не все нули'"
15 дек 17, 15:34    [21037258]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Далее в примере он взял очень частный случай. И тем не менее тема называется именно "В строке содержатся одинаковые символы "
:D
15 дек 17, 15:44    [21037294]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Cammomile
Далее в примере он взял очень частный случай. И тем не менее тема называется именно "В строке содержатся одинаковые символы "
:D

да все проще.
половина юзеров просто не в состоянии выразить словами то, что им нужно.
для этого на форуме придуманы правила оформления:
хочешь помощи -- давай исходные данные и желаемый результат.
вот он и привел то, что хочет.
и все на это ориентируются, и правильно делают.
---
если верить нашим юзерам, то у них "SQL Server не запускается".
а что там на самом деле, надо просить в картинках.
и чаще всего это просто неработающий запрос по причине Invalid object name.
ибо в мастере запускают
---
а файлы эксель они вообще называют датабэйс.
и вот кладут они свои файлы на шару,
а потом кто-то грохнет файл, и начинаются крики:
кто удалил мой датабэйс <имя такое-то>?
15 дек 17, 16:48    [21037630]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Cammomile
Ужас, это решать то что сам придумал, место задачи заказчика, чем ты и занимаешься.
Процитирую автора
автор
Как просто, эффективно и без лишнего кода определить, что в строке содержатся одинаковые символы.

Чуешь разницу между "содержаться одинаковые" и "все одинаковые" ?
Чую. Один символ одинаков с самим собой?
15 дек 17, 17:19    [21037791]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Слово "одинаковый" используется только для сравнения нескольких предметов. Ты не можешь сказать, что у тебя телефон одинаков сам с собой, или табурет одинаков сам с собой. Это просто семантическая нелепица выходит.

Вот фраза "два табурета одинаковы" или "три яблока одинаковы" - осмысленна.
15 дек 17, 17:29    [21037832]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Cammomile
Ты не можешь сказать, что у тебя телефон одинаков сам с собой, или табурет одинаков сам с собой.
Могу!
Чтобы группа была полной.
15 дек 17, 17:33    [21037842]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
iap
Cammomile
Ужас, это решать то что сам придумал, место задачи заказчика, чем ты и занимаешься.
Процитирую автора
пропущено...

Чуешь разницу между "содержаться одинаковые" и "все одинаковые" ?
Чую. Один символ одинаков с самим собой?

В строке содержатся одинаковые символы.
Как минимум 2. Как максимум все.
Но нужно уточнить:
что такое "символ";
что такое "строка";
способ определения признака "содержатся";
что за функция сравнения стоит за понятием "одинаковые"
15 дек 17, 17:33    [21037846]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Кстати, я сам себе очень напоминаю себя!
15 дек 17, 17:34    [21037848]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
iap
Кстати, я сам себе очень напоминаю себя!

А я для напоминаний Сири использую.
15 дек 17, 17:39    [21037865]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Если использовать регулярные выражения, то IsMatch(<строка>, '.{2,}')
15 дек 17, 17:50    [21037882]     Ответить | Цитировать Сообщить модератору
 Re: В строке содержатся одинаковые символы  [new]
iii2
Member

Откуда:
Сообщений: 202
rsolanov
Если использовать регулярные выражения, то IsMatch(<строка>, '.{2,}')

Ну так и используй регулярные выражения!
Оберни в CLR функцию - и всех делов.
17 дек 17, 06:52    [21040195]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить