Я решил эту проблему сортировки с ниже сценария
arrVals.sort(function(a, b){
//return b.text - a.text;
var AInt = parseInt(a.text, 10);
var BInt = parseInt(b.text, 10);
if ($.isNumeric(a.text) == false && $.isNumeric(b.text) == false) {
var aA = a.text
var bA = b.text;
return aA > bA ? 1 : -1;
} else if ($.isNumeric(a.text) == false) { // A is not an Int
return 1; // to make alphanumeric sort first return -1 here
} else if ($.isNumeric(b.text) == false) { // B is not an Int
return -1; // to make alphanumeric sort first return 1 here
} else {
return AInt < BInt ? 1 : -1;
}
});
Это отлично работает для хорошо смешанного массива .:)
Спасибо.
Вы, возможно, должны изменить запрос для включения владельца, если существует больше чем один в базе данных.
DECLARE @cmd varchar(4000)
DECLARE cmds CURSOR FOR
SELECT 'drop table [' + Table_Name + ']'
FROM INFORMATION_SCHEMA.TABLES
WHERE Table_Name LIKE 'prefix%'
OPEN cmds
WHILE 1 = 1
BEGIN
FETCH cmds INTO @cmd
IF @@fetch_status != 0 BREAK
EXEC(@cmd)
END
CLOSE cmds;
DEALLOCATE cmds
Это более чисто, чем использование двухступенчатого подхода генерирует сценарий плюс выполнение. Но одно преимущество генерации скриптов состоит в том, что она дает Вам шанс рассмотреть полноту того, что будет выполненным, прежде чем она будет на самом деле выполнена.
я знаю, что, если бы я собирался сделать это против производственной базы данных, я был бы максимально осторожен.
Редактирование Пример кода зафиксирован.
SELECT 'DROP TABLE "' + TABLE_NAME + '"'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '[prefix]%'
Это генерирует сценарий.
Добавляющий пункт для проверки существования таблицы перед удалением:
SELECT 'IF OBJECT_ID(''' +TABLE_NAME + ''') IS NOT NULL BEGIN DROP TABLE [' + TABLE_NAME + '] END;'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '[prefix]%'
Спасибо Curt, это - тот же вид решения, что я был на полпути через меня.
Ваш более хорош, чем мой, хотя - это предоставляет себя легкой модификации. Я добавил объединение к выбору и вытер некоторые представления также;)
declare @cmd varchar(4000)
declare cmds cursor for
Select 'drop table [' + Table_Name + ']'
From INFORMATION_SCHEMA.TABLES
Where Table_Name like 'prefix%'
union
Select 'drop view [' + Table_Name + ']'
From INFORMATION_SCHEMA.VIEWS
Where Table_Name like 'prefix%'
open cmds
while 1=1
begin
fetch cmds into @cmd
if @@fetch_status != 0 break
exec(@cmd)
end
close local
deallocate local
не волнуются, это не производственная база данных - это только для легкой очистки моего dev дб, в то время как я испытываю материал.
Xenph Yan ответ был намного инструментом для очистки, чем мой, но здесь является моим все равно.
DECLARE @startStr AS Varchar (20)
SET @startStr = 'tableName'
DECLARE @startStrLen AS int
SELECT @startStrLen = LEN(@startStr)
SELECT 'DROP TABLE ' + name FROM sysobjects
WHERE type = 'U' AND LEFT(name, @startStrLen) = @startStr
Просто изменение tableName
к символам, с которыми Вы хотите искать.
CREATE PROCEDURE usp_GenerateDROP
@Pattern AS varchar(255)
,@PrintQuery AS bit
,@ExecQuery AS bit
AS
BEGIN
DECLARE @sql AS varchar(max)
SELECT @sql = COALESCE(@sql, '') + 'DROP TABLE [' + TABLE_NAME + ']' + CHAR(13) + CHAR(10)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE @Pattern
IF @PrintQuery = 1 PRINT @sql
IF @ExecQuery = 1 EXEC (@sql)
END