Для ввода переключите его класс переключения. Если он активен, то добавлен класс, проверяемый переключателем пользовательского интерфейса.
<p-inputSwitch [ngClass]="(doc.fileStatus === 'ACTIVE')?'ui-inputswitch-checked':''" (onChange)="activeInactive(doc)" [(ngModel)]="doc.fileStatus">
Если вы хотите стилизовать переключатель ввода для активного и неактивного состояния, используйте класс ниже для активного и неактивного состояния
Для неактивного состояния
.ui-inputswitch.ui-widget {
}
[ 117] Для активного состояния
.ui-inputswitch.ui-widget.ui-inputswitch-checked {
}
что-то как
Select * from TableName where Name Like 'Spa%'
ORDER BY case when soundex(name) = soundex('Spa') then '1' else soundex(name) end
должен работать хорошо.
на самом деле это будет работать лучше
Select * from TableName where Name Like 'Spa%'
ORDER BY DIFFERENCE(name, 'Spa') desc;
FWIW я сделал некоторые быстрые тесты и если 'Имя' находится в НЕКЛАСТЕРИЗОВАННОМ ИНДЕКСЕ SQL, будет использовать индекс и не делает сканирования таблицы. Кроме того, КАК, кажется, использует меньше ресурсов, чем charindex (который возвращает менее желательные результаты). Протестированный на sql 2000.
Вы понимаете, я предполагаю, что Ваша схема примерно устраняет полноценность индексов для этих видов запросов?
Большая проблема Ваш "КАК '%spa %'". Любой "КАК" ключевой запуск с подстановочного знака - автоматическое сканирование таблицы.
Следующее должно сделать необходимое, но это неэффективно, делание двух полных таблиц выбирает, и это также полагается на Ваше точное совпадение, разграничиваемое пробелами. Я думаю, что Полнотекстовое индексирование помогло бы, но это имеет собственные издержки.
select distinct * from
(
Select * from TableName
where CHARINDEX('spa ', Name) > 0
or CHARINDEX(' spa', Name) > 0
Union
Select * from TableName
where Name Like '%spa%'
)
Уходя главный пример, по крайней мере, в MSSQL2005, изменяющем КЛАСТЕРИЗОВАННОЕ на NONCLUSTERED, заставит его сделать сканирование таблицы. КЛАСТЕРИЗИРУЕМЫЙ дает Вам, индекс ищет. Похож это соответствует условиям вопроса.
CREATE TABLE tblTest(ID INT, colname VARCHAR(20) ) CREATE CLUSTERED INDEX tstidx1_tblTest ON tblTest(colname); INSERT tblTest SELECT 1,'Space Company' INSERT tblTest SELECT 2,'Spa Resort' INSERT tblTest SELECT 3,'Spa Hotel' INSERT tblTest SELECT 4,'Spare Parts' INSERT tblTest SELECT 5,'WithoutTheKeyword' SELECT * FROM tblTest WHERE colname LIKE 'Spa%' ORDER BY DIFFERENCE(colname,'Spa') DESC; DROP TABLE tblTest
В основном необходимо определить (точно), какова функция рейтинга действительно. Что, если у Вас есть строка, которая является "Спа". или "spa.com"? После того как Вам определили это, необходимо поместить ту логику в пункт ORDER BY. Например:
SELECT
name
FROM
Some_Table
WHERE
name LIKE '%spa%'
ORDER BY
CASE
WHEN name LIKE '% ' + @search_word + ' %' THEN 1 -- Notice the spaces
ELSE 2
END,
name
С другой стороны, Вы могли записать занимающую место функцию и использование что:
SELECT
name
FROM
Some_Table
WHERE
name LIKE '%' + @search_word + '%'
ORDER BY
dbo.GetNameMatchRank(name, @search_word)
Производительность на очень больших наборах результатов не может быть слишком большой, таким образом, этот подход зависит от Ваших ожидаемых размеров результата поиска.
Это должно работать:
Select * from TableName where Name Like '%spa%'
ORDER BY Name