Если у вас есть оператор SELECT
, в котором подсчитывается количество слов, вы можете сделать то же самое, чтобы подсчитать количество «не-слов» (окружено скобками).
SELECT (LEN(text) - LEN(REPLACE(text, ' ', ''))) + 1 - (
LEN(text) - LEN(REPLACE(text, '(', ''))
)
FROM TEXTS
Заканчивать this SQLFiddle, чтобы увидеть, как работает запрос.
Обновление довольно легко сделать из этого:
UPDATE TEXTS
SET WORDCOUNT = (LEN(text) - LEN(REPLACE(text, ' ', ''))) + 1 - (
LEN(text) - LEN(REPLACE(text, '(', ''))
)
Это обновление будет работать только если ваш текст правильно отформатирован, все открывающая скобка, которые открыты закрыты (число (
в вашем текст совпадает с номером )
в тексте).
Но если есть вероятность того, что есть более открыто/закрыто скобку вокруг слов, чем Шоуда быть, как и в случае опечатка, вы должны использовать это:
SELECT (
LEN(text) - LEN(REPLACE(text, ' ', '')))
+ 1
- (
CASE
WHEN LEN(text) - LEN(REPLACE(text, ')', '')) > LEN(text) - LEN(REPLACE(text, '(', ''))
THEN LEN(text) - LEN(REPLACE(text, '(', ''))
ELSE
LEN(text) - LEN(REPLACE(text, ')', ''))
END
)
FROM TEXTS
Вы можете найти SQLFiddle here.
В этом случае оператор UPDATE будет выглядеть следующим образом:
UPDATE TEXTS
SET WORDCOUNT = (
LEN(text) - LEN(REPLACE(text, ' ', '')))
+ 1
- (
CASE
WHEN LEN(text) - LEN(REPLACE(text, ')', '')) > LEN(text) - LEN(REPLACE(text, '(', ''))
THEN LEN(text) - LEN(REPLACE(text, '(', ''))
ELSE
LEN(text) - LEN(REPLACE(text, ')', ''))
END
)
)
Пробовали ли вы что-нибудь? –
Запросы UPDATE просты: что займет немного больше работы, это написать функцию, которая учитывает слова. Попробуйте googling для «SQL split words». – Joe
Выписали это уже: UPDATE тексты SET WordCount = LEN (текст) - LEN (REPLACE (текст, '', '')) + 1 Проблема заключается в том, как игнорировать() и [] – user2500179