Generate all possible combinations of strings of certain length in oracle




ROW GENERATE METHOD

WITH combinations AS
  (SELECT chr( ascii('A')+level-1 ) c FROM dual CONNECT BY level <= 26
  )
SELECT * FROM combinations
UNION ALL
SELECT c1.c || c2.c FROM combinations c1, combinations c2
UNION ALL
SELECT c1.c
  || c2.c
  || c3.c
FROM combinations c1,
  combinations c2,
  combinations c3

 
Comments are closed

1С. Ошибка формирования схемы БД при обновлении

Входящие данные

  • Успешное нединамическое обновление БД, без каких либо сбоев
  • Был добавлен реквизит документа РКО
  • При записи новых документов РКО — ошибка Поле fld9151 не может содержать значения NULL
  • База валится, запись других документов возможна

Возможные пути решения

Вариант 1. Очистка Кэша программу для выполнения данного действия можно взять тут

Вариант 2. Выполнить тестирование и исправление БД — в моем случае базу сразу валилась

Вариант 3. Поднять архив прошлого периода, поместить в новую БД, взять таблицу конфигурации из архива

DELETE FROM Actual.dbo.Config
DELETE FROM Actual.dbo.ConfigSAVE
INSERT INTO Actual.dbo.Config SELECT * FROm Archive.dbo.Config

Где Actual — текущая БД, Archive — архив БД

Вариант 4. Запросить структуру хранения БД в 1С методом GetDBStorageStructureInfo() — в отладчике посмотреть какие поля каким таблицам принадлежат, проверить на уникальность

Вариант 5. В SQL MS проверить поле по которому возникает ошибка на уникальность

SELECT *
FROM Actual.INFORMATION_SCHEMA.COLUMNS
WHERE column_name = '_Fld9151';
GO

Где Actual — имя текущей БД,  ‘_Fld9151’ — искомое поле

Вариант 6. Заменить структуру хранения БД в таблице [DBSchema] структурой из архива

DELETE FROM Actual.[dbo].[DBSchema]
Insert into Actual.[dbo].[DBSchema] SELECT * FROM Archive.[dbo].[DBSchema]

Где Actual — текущая БД, Archive — архив БД

0 Comments

SQL. FREETEXT / CONTAINS

SELECT title_id, title FROM Titles
WHERE CONTAINS(notes, 'recipe')

SELECT title_id, title FROM Titles
WHERE FREETEXT(notes, 'recipe')

CONTAINS находит только полные совпадения внутри колонок.

FREETEXT же берет язык колонки(или указанный аргументом LANGUAGE), и в соответствии с его правилами выполняет несколько действий, а именно:

  1. Разбивает текст на отдельные слова
  2. Удаляет из текста ненужный шум — междометия, суффиксы, предлоги, и т.д.
  3. Дополняет текст основами слов(выполняет стемминг) — так скажем к слову «программистский» добавится «програмист».
  4. Дополняет текст синонимами найденными в словарях.

Это делается как для поискового запроса, так и для содержимого колонок(правда т.к. эта операция довольно затратна, то для колонок она выполняется во время построения полнотекстового поиска, а вовсе не в момент запроса).

0 Comments