#sql #sql-server
#sql #sql-сервер
Вопрос:
Как я могу получить текст между звездочками ****, учитывая, что начало и конец являются одинаковыми строковыми значениями?
Create Table #temp
(
TestString varchar(400)
)
insert into #temp
(
TestString
)
select
'**** mary had a little lamb****'
union
select
'**** humpy dumpty had a great fall**** All the king''s horses and all the king''s men'
Комментарии:
1. это будет **** всегда? если да, то вы можете сравнить первые 4 символа и последние 4 символа, используя SUBSTR, если то же самое, то используйте REPLCE() для замены * на «.
2. Да, это всегда будет текст между **** и *****. Я не могу сравнить последние 4 символа, потому что это не всегда будут последние 4 символа
Ответ №1:
Вы могли бы использовать базовые строковые функции следующим образом:
SELECT
TestString,
SUBSTRING(TestString,
CHARINDEX('****', TestString) 4,
CHARINDEX('****', TestString, CHARINDEX('****', TestString) 1) - 5) AS contents
FROM yourTable;
ДЕМОНСТРАЦИЯ
Данные:
WITH yourTable AS (
SELECT '**** mary had a little lamb****' AS TestString UNION ALL
SELECT '**** humpy dumpty had a great fall**** All the king''s horses and all the king''s men'
)
Комментарии:
1. Я создам новый вопрос, если это будет лучше, но я совершенно забыл об этой ситуации. Есть ли простое решение? — ВЫБЕРИТЕ ‘bla **** abcd two two **** dfdfdfd’