Я перемещаю данные из старой таблицы в новую версию SQL Server и борюсь с чем-то, что, надеюсь, кто-то может помочь.Изменить порядок строк - Sql-сервер
У меня есть столбец в старой таблице с именем «EmployeeName» в порядке имени firstname.lastname. В новой таблице мы будем использовать руководство для идентификации сотрудников. Таблица с указателем guid имеет имена в порядке «lastname, firstname», поэтому моя функция, которую я написал, чтобы вытащить guid для сотрудника, не соответствует именам.
Как я могу на сервере SQL преобразовать 'firstname.lastname' в 'lastname, firstname'?
здесь функция я писал:
ALTER FUNCTION [Wire].[udf_GetEmployeeGuid_FromName]
(@EmployeeName VARCHAR(50) -- format 'firstname.lastname')
RETURNS uniqueidentifier
AS
BEGIN
DECLARE @EmployeeGuid uniqueidentifier
SELECT @EmployeeGuid = GUID
FROM B.Employees --format 'lastname, firstname'
WHERE LEFT(@EmployeeName, CHARINDEX('.', @EmployeeName)) = RIGHT([Name], LEN([Name]) - CHARINDEX(', ', [Name]))
RETURN IsNull(@EmployeeGuid, '00000000-0000-0000-0000-000000000000')
END
К сожалению, я относительно новичок в написании этих типов заявлений и борьбе с тем, как это сделать, используя приведенный выше код. – Taryn
Я выбегаю из двери, но вкратце вы хотите SELECT guid FROM tablename WHERE LEFT ((othertable.EmployeeName, CHARINDEX ('.', Othertable.EmployeeName)) = RIGHT (tablename.EmployeeName, LEN (tablename.EmployeeName) - CHARINDEX ('.', Tablename.EmployeeName)) - вы хотите WHERE для обоих firstnames и AND для обоих последних имен, используя синтаксис LEFT и RIGHT. – DOK
Argh! Попробуйте разбить свою функцию на части и убедиться, что они делают то, что вы ожидаете. Например, проверьте, что вы получаете от первой части предложения WHERE следующим образом: SELECT TOP 100 * FROM B.Employees WHERE LEFT (@EmployeeName, CHARINDEX ('.', @EmployeeName)). Вы можете найти, например, там, где нет запятой после запятой, или есть лишние пробелы в одной таблице. Просто просмотрите данные. Кроме того, я думаю, вам нужно иметь И в ГДЕ для другого имени. , одно предложение совпадает с первым именем, а второе совпадает с последним. Убедитесь, что вы только получаете один запись возвращен. – DOK