Массивы имеют O (1) произвольный доступ, но являются действительно дорогими, чтобы добавить материал на или удалить материал из.
Связанные списки являются действительно дешевыми, чтобы добавить или удалить объекты куда угодно и выполнить итерации, но произвольный доступ является O (n).
perl -lape 's/^\s+|\s+$//g'
Честно говоря, я лучше всех знаю регулярные выражения Perl, поэтому считаю, что perl -lape
намного проще в использовании, чем sed -e
.
Также , чтобы ответить на исходный вопрос, вы можете заставить sed выполнить несколько таких операций:
sed -e 's/something/something else/' -e 's/another substitution/another replacement/'
Очевидно, вы также можете поместить две замены в одну строку и разделить их точкой с запятой, как указано в другом ответе.
s дату, чтобы ограничить ваш выбор. Вы можете перейти к большей или меньшей степени детализации, добавив дополнительные предложения, используя соответствующий код DatePart, напримерAND DATEPART(hh, register_date) = 12)
, чтобы получить записи, сделанные между 12 и 1.
Полный список см. В документах MSDN DATEPART . веских аргументов.
Прямая поддержка оператора LIKE для переменных DATETIME отсутствует, но вы всегда можете преобразовать DATETIME в VARCHAR:
SELECT (list of fields) FROM YourTable
WHERE CONVERT(VARCHAR(25), register_date, 126) LIKE '2009-10-10%'
Посмотрите документы MSDN для получения полного списка доступные "стили" в функции CONVERT.
Marc
Если вы это сделаете, вы заставите его выполнить преобразование строки. Было бы лучше создать диапазон дат начала / окончания и использовать:
declare @start datetime, @end datetime
select @start = '2009-10-10', @end = '2009-11-10'
select * from record where register_date >= @start
and register_date < @end
Это позволит использовать индекс (если он есть на register_date
), а не сканирование таблицы.
Вы можете использовать CONVERT, чтобы получить дату в текстовой форме. Если вы конвертируете его в varchar (10), вы можете использовать = вместо подобного:
select *
from record
where CONVERT(VARCHAR(10),register_date,120) = '2009-10-10'
Или вы можете использовать верхнюю и нижнюю граничные даты, с дополнительным преимуществом, заключающимся в использовании индекса:
select *
from record
where '2009-10-10' <= register_date
and register_date < '2009-10-11'