Puede alguien, por favor, por favor, ayúdame aquí; estoy muy, muy confundido.

Estoy agarrando ssn valores de una base de datos de oracle con esta consulta:

SELECT
substr(SSN,6)
FROM MYTABLE

y voy a obtener el valor correcto de los últimos 4 dígitos

Al introducir ese valor en una tabla de sql server, estoy recibiendo un valor diferente.

Por ejemplo, vamos a suponer que el ssn que estoy agarrando es 123456789, en Oracle, tengo 6789 que es correcto.

Sin embargo, después de insertar el valor en una tabla de sql server como
Insert into mytable (ssn) values(ssn), el valor se muestra como 5678.

También traté de seleccionar todo el ssn como

SELECT
substr(SSN)
FROM MYTABLE

y, a continuación, pruebe a insertar en un servidor sql db como:

Insert into mytable (ssn) values(right(ssn,4).

Todavía me terminan con 5678.

Puede alguien por favor decirme qué estoy haciendo mal?

Muchas gracias de antemano

  • Entonces, ¿cuáles son los tipos de datos de los dos differnt de las tablas por el campo ssn?
  • A la derecha, y lo que es el INSERT ... SELECT consulta, porque no es INSERT ... VALUES. Si tienes razón en que sólo está tirando 6789 de Oracle en primer lugar, es imposible que SQL Server tiene 5678… si tienes el número entero, entonces es posible que la tabla temporal de SQL Server (asumo que está almacenar resultados intermedios en algún lugar) ha SSN define como VARCHAR(8)
  • ambos son de tipo varchar(9). Gracias por la pronta respuesta.
  • A continuación usted necesitará para mostrar las declaraciones reales que usted está utilizando, junto con algunos datos de ejemplo y la mesa de declaraciones. SQL Server no está haciendo esto porque no funciona; hay algo en sus declaraciones o sus datos que están cambiando la subcadena más.
  • Oh, caramba, me ams tanto maldito tonto. Había guardado la copia original del código .txt archivo y enviar a mi jefe, que en realidad descubrió el problema. Todo este tiempo, yo había estado perdiendo el tiempo modificando el .archivo txt en lugar del código real. Lo siento chicos, estoy realmente lo siento por perder su tiempo. el .txt archivo tenía como substr(5,4). Ahora he cambiado a substr(6,4) y todo está bien. de nuevo, lo siento.
  • yah. no omita el tercer argumento de substr! Especialmente cuando los pueblos de las identidades en juego.

InformationsquelleAutor Kenny | 2011-09-19

2 Comentarios

  1. 11

    Que esto es lo correcto…

    SELECT RIGHT('123456789',4)

    O se puede comprobar que la longitud del campo que usted está usando

  2. 0

    usted puede obtener los últimos cuatro dígitos de un número en oracle mediante simple función substr.

    select SUBSTR(ssn,(length(ssn)-4),4) from MYTABLE;
    • Este debe ser: select SUBSTR(ssn,(longitud(ssn)-3),4) from MYTABLE;

Dejar respuesta

Please enter your comment!
Please enter your name here