retroalimentación desarrollo de sincronización de datos, los datos se truncan mesa de escribir, por ejemplo:
- Los datos de origen: ABC_DEFGHIJKL, Referencia: ABC-31000000-ABCDEF, AES123456789
- Después de escribir solamente: ABC_DEFGHIJKL, Referencia: ABC
Ver la tabla correspondiente tipo de campo nvarchar (100), la sincronización instrucción de inserción usando INSERT INTO xxx VALORES (CAST (AS nvarchar)).
Crear una tabla de prueba de inserción de datos de prueba.
create table tmp0327(name nvarchar(100));
INSERT INTO tmp0327 VALUES(CAST ('ABC_DEFGHIJKL,Reference:ABC-31000000-ABCDEF,AES123456789' AS nvarchar));
INSERT INTO tmp0327 VALUES('ABC_DEFGHIJKL,Reference:ABC-31000000-ABCDEF,AES123456789');
Select datalength(name),* from tmp0327;
Después de la conversión se puede ver la cadena se corta, sin la conversión de lo normal. REPARTO sospechoso (AS nvarchar) con corte automático de la función, a revisar la documentación oficial de la definición que se encuentra en la siguiente descripción:
Si el valor nvarchar (n) cuando n no se especifica en la definición de campo o declaración de variables, el valor predeterminado n es 1; si la función CAST y CONVERT, n no se especifica, el valor predeterminado es 30. Tema también puede ser visto desde el ABC_DEFGHIJKL anterior, Referencia: ABC-31 pasa a ser 30, una longitud de 60.
Así que si queremos insertar cuando los datos no se trunca de dos maneras:
- No mostrar la conversión, a su vez, sqlserver conversión implícita para usted
- Si utilizamos, para especificar el valor de n, por ejemplo,
INSERT INTO tmp0327 VALUES(CAST ('ABC_DEFGHIJKL,Reference:ABC-31000000-ABCDEF,AES123456789' AS nvarchar(100)));
También a continuación, puede verificar con documentos oficiales dicen, el valor nvarchar (n) n no se especifica en la definición del campo o la declaración de variables, n valores por defecto a 1
create table tmp0327_2(name nvarchar);
Definido sqlserver véase la tabla, podemos ver que realmente es de tipo nvarchar (1)
referencia