Войти
Закрыть

Выборка полей временной таблицы с параметрами в MSSQL

Базы данных / MSSQL

Пример выборки полей из временной таблицы со всеми параметрами.
Идентично можно выбирать и для обычных таблиц.

Select c.column_id
    ,c.name   [column_name]
    ,y.name   [data_type]
    ,c.max_length
    ,c.precision
    ,c.scale
    ,c.is_identity
    ,c.is_nullable
    ,c.collation_name
  ,', ['+c.name +'] ['+y.name+']'
  +IIF (y.name in ('varchar','char'),'('+cast(IIF(c.max_length=0,'max',c.max_length) as varchar(5))+')','')
  +IIF (y.name in ('nvarchar'),'('+cast(IIF(c.max_length=0,'max',c.max_length/2) as varchar(5))+')','')
  +IIF (y.name in ('decimal','numeric'),'('+cast(c.precision as varchar(3))+', '+cast(c.scale as varchar(3))+')','')
  +IIF (not y.collation_name is null,' COLLATE '+y.collation_name,'')
  +IIF (y.is_nullable = 1,' NULL','')
  as [ready_column]
 From tempdb.sys.columns c 
 Inner join sys.types y ON y.system_type_id = c.system_type_id
 WHERE c.object_id = Object_id('tempdb..#tmp')
   and y.name!='sysname'
   order by c.column_id

#tmp - ваша временная таблица

Пример запуска и остановки Job-ов при помощи скриптов MSSQL (активация и дезактивация)

Базы данных / MSSQL

--generate disable   деактивация

SELECT 'exec msdb..sp_update_job @job_name = '''+NAME+''', @enabled = 0' FROM msdb..sysjobs

--generate enable   активация

SELECT 'exec msdb..sp_update_job @job_name = '''+NAME+''', @enabled = 1' FROM msdb..sysjobs

Небольшие примеры работы с очередью Database Mail в MSSQL

Базы данных / MSSQL

Остановка Database Mail
exec msdb.dbo.sysmail_stop_sp

Чистка истории неотправленных сообщений
-- Если количество записей в таблице msdb.sysmail_allitems очень большое,
-- то использовать параметр @sent_before для ограничения удаляемых записей


exec msdb.dbo.sysmail_delete_mailitems_sp @sent_status = 'unsent'
exec msdb.dbo.sysmail_delete_mailitems_sp @sent_status = 'retrying'
exec msdb.dbo.sysmail_delete_mailitems_sp @sent_status = 'failed'

Ascending и Descending сортировка в PriorityQueue

Разработка / .NET C#

Просто пример простого Comparer-а для сортировок

//Descending Sort, Integer
var queue = new PriorityQueue<int, int>(Comparer<int>.Create((x, y) => y - x));

//Ascending Sort, Object
var queue = new PriorityQueue<ObjectA, ObjectB>(Comparer<ObjectB>.Create((x, y) => x.Something.CompareTo(y.Something));

Конвертируем DATE в INT и INT в DATE (MSSQL)

Базы данных / MSSQL

Конвертируем DATE или DATETIME в INT (формата YYYYMMDD)

declare @dt datetime

set @dt = '09-22-2007 15:07:38.850'

select cast(convert(char(8),@dt,112) as int)

Обрезаем дату до минут или до часов в MSSQL

Базы данных / MSSQL

Пример обрезки даты по минуты и по часы:

declare @dt datetime

set @dt = '09-22-2007 15:07:38.850'

select dateadd(mi, datediff(mi, 0, @dt), 0)
select dateadd(hour, datediff(hour, 0, @dt), 0)

Поиск количества нолей факториала N!

Разработка / .NET C#


Просто пример поиска нолей в конце у факториала.

    public int TrailingZeroes(int n) {
        int result = 0;
        while(n!=0){
            result += n/5;
            n = n/5;
        }
        return result;        
    }

Вычисление максимального количества точек принадлежащих одной линии из массива точек C#

Разработка / .NET C#

Дано:
Массив точек на плоскости: points[][]   Xi и Yi.
Надо найти:
Сколько максимально точек принадлежит одной прямой.

Пример:

Исходный массив: points= [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]
Результат: 4

Добавление записей в таблицу с первичным ключом MSSQL (T-SQL)

Базы данных / MSSQL

Как добавить в таблицу данные с Primary Key (когда надо этот первичный ключ игнорировать)

SET IDENTITY_INSERT tableA ON

-- Теперь можно делать список полей с  Primary Key и добавлять записи так:

INSERT Into tableA ([id], [c2], [c3], [c4], [c5] ) 
SELECT [id], [c2], [c3], [c4], [c5] FROM tableB

-- Вот так нельзя "INSERT Into tableA SELECT ........"

SET IDENTITY_INSERT tableA OFF


Округление даты до часа и до минут в  MSSQL TSQL

Базы данных / MSSQL

Пример округления даты до часа и до минут

declare @dt datetime

set @dt = '09-22-2007 15:07:38.850'

select dateadd(mi, datediff(mi, 0, @dt), 0)
select dateadd(hour, datediff(hour, 0, @dt), 0)


В будущее В прошлое

Навигация