function GetRequestParam(param)
{
var res = null;
try{
var qs = decodeURIComponent(window.location.search.substring(1));//get everything after then '?' in URI
var ar = qs.split('&');
$.each(ar, function(a, b){
var kv = b.split('=');
if(param === kv[0]){
res = kv[1];
return false;//break loop
}
});
}catch(e){}
return res;
}
Решение:
UPDATE tablename SET [filename] = RTRIM([filename]) + '.jpg' WHERE id > 50
RTRIM требуется, потому что иначе [имя файла] столбец в целом будет выбран для конкатенации строк т.е. если это - varchar (20), столбец и имя файла являются только 10 буквами долго затем, это все еще выберет те 10 букв и затем 10 пробелов. Это в свою очередь приведет к ошибке, поскольку Вы пытаетесь соответствовать 20 + 3 символа в 20 символьных длинных полей.
Ответ MattMitchell корректен, если столбец является CHAR (20), но не верен, если это был VARCHAR (20), и пробелы не были явно введены.
При попытке его на поле CHAR без функции RTRIM, Вы получите "Строку, или двоичные данные были бы усеченной" ошибкой.
Если исходные данные прибыли из символьного столбца или переменной (перед тем, чтобы быть вставленным в эту таблицу), то исходным данным добавили пробелы прежде, чем стать varchar.
DECLARE @Name char(10), @Name2 varchar(10)
SELECT
@Name = 'Bob',
@Name2 = 'Bob'
SELECT
CASE WHEN @Name2 = @Name THEN 1 ELSE 0 END as Equal,
CASE WHEN @Name2 like @Name THEN 1 ELSE 0 END as Similiar
Жизненный Урок: никогда не используйте символ.
Хороший легкий я думаю.
update MyTable
set filename = filename + '.jpg'
where ...
Править: Ох +1 к ответу @MattMitchell для rtrim предложения.
Я хотел скорректировать Жизненный Урок "B David". Я думаю, что это должен быть "никогда символ использования для значений строки переменной длины"-> существует допустимое использование для типа данных char, просто не думают, целых некоторые люди :)
Ответ на тайну конечных пробелов может быть найден в ANSI_PADDING
Для получения дополнительной информации посещение: НАБОР ANSI_PADDING (Transact-SQL)
Значение по умолчанию является ANSI_PADDIN НА. Это будет влиять на столбец только, когда он будет создан, но не к существующим столбцам.
Прежде чем Вы выполните запрос на обновление, проверите Ваши данные. Это, возможно, было поставлено под угрозу.
Выполните следующий запрос для нахождения поставленных под угрозу строк:
SELECT *
FROM tablename
WHERE LEN(RTRIM([filename])) > 46
-- The column size varchar(50) minus 4 chars
-- for the needed file extension '.jpg' is 46.
Эти строки или потеряли некоторые символы или существует недостаточно пространства для добавления расширения файла.