public static Cast ( |
||
value | ||
destType | SqlType | |
리턴 |
public static void VisitCast() { var exp = SqlExpression.Cast(SqlExpression.Constant(SqlObject.String(new SqlString("223"))), PrimitiveTypes.BigInt()); Visit(exp); }
public void FormatToString() { var exp = SqlExpression.Cast(SqlExpression.FunctionCall("test", new SqlExpression[] { SqlExpression.Constant(56) }), PrimitiveTypes.VarChar(45)); var expected = "CAST(test(56) AS VARCHAR(45))"; Assert.AreEqual(expected, exp.ToString()); }
public static void GetCastType(object value, SqlTypeCode destTypeCode, int p, int s) { var targetType = PrimitiveTypes.Type(destTypeCode, new { precision = p, scale = s, maxSize = p, size = p }); var obj = SqlObject.New(SqlValueUtil.FromObject(value)); var exp = SqlExpression.Constant(obj); var cast = SqlExpression.Cast(exp, targetType); Assert.Equal(targetType, cast.TargetType); }
public virtual SqlExpression VisitCast(SqlCastExpression expression) { var value = expression.Value; if (value != null) { value = Visit(value); } return(SqlExpression.Cast(value, expression.TargetType)); }
public static void SerializeCast(object value, SqlTypeCode destTypeCode, int p, int s) { var targetType = PrimitiveTypes.Type(destTypeCode, new { precision = p, scale = s, maxSize = p, size = p }); var obj = SqlObject.New(SqlValueUtil.FromObject(value)); var exp = SqlExpression.Constant(obj); var cast = SqlExpression.Cast(exp, targetType); var result = BinarySerializeUtil.Serialize(cast); Assert.IsType <SqlConstantExpression>(result.Value); }
public void CastStringToDate() { var exp = SqlExpression.Cast(SqlExpression.Constant(DataObject.String("2015-09-01")), PrimitiveTypes.Date()); SqlExpression casted = null; Assert.DoesNotThrow(() => casted = exp.Evaluate()); Assert.IsNotNull(casted); Assert.IsInstanceOf <SqlConstantExpression>(casted); var value = ((SqlConstantExpression)casted).Value; Assert.IsNotNull(value.Value); Assert.IsInstanceOf <DateType>(value.Type); Assert.AreEqual(SqlTypeCode.Date, value.Type.TypeCode); Assert.AreEqual(new SqlDateTime(2015, 09, 01), value.Value); }
public void CastStringToNumber() { var exp = SqlExpression.Cast(SqlExpression.Constant(DataObject.String("12.3e4")), PrimitiveTypes.Numeric()); SqlExpression casted = null; Assert.DoesNotThrow(() => casted = exp.Evaluate()); Assert.IsNotNull(casted); Assert.IsInstanceOf <SqlConstantExpression>(casted); var value = ((SqlConstantExpression)casted).Value; Assert.IsNotNull(value.Value); Assert.IsInstanceOf <NumericType>(value.Type); Assert.AreEqual(SqlTypeCode.Numeric, value.Type.TypeCode); Assert.AreEqual(SqlNumber.Parse("12.3e4"), value.Value); }
public void CastBooleanTrueToString() { var exp = SqlExpression.Cast(SqlExpression.Constant(DataObject.Boolean(true)), PrimitiveTypes.String()); SqlExpression casted = null; Assert.DoesNotThrow(() => casted = exp.Evaluate()); Assert.IsNotNull(casted); Assert.IsInstanceOf <SqlConstantExpression>(casted); var value = ((SqlConstantExpression)casted).Value; Assert.IsNotNull(value.Value); Assert.IsInstanceOf <StringType>(value.Type); Assert.AreEqual(SqlTypeCode.String, value.Type.TypeCode); Assert.AreEqual(new SqlString("True"), value.Value); }
public void CastStringToBooleanFalse() { var exp = SqlExpression.Cast(SqlExpression.Constant(DataObject.String("false")), PrimitiveTypes.Boolean()); SqlExpression casted = null; Assert.DoesNotThrow(() => casted = exp.Evaluate()); Assert.IsNotNull(casted); Assert.IsInstanceOf <SqlConstantExpression>(casted); var value = ((SqlConstantExpression)casted).Value; Assert.IsNotNull(value.Value); Assert.IsInstanceOf <BooleanType>(value.Type); Assert.AreEqual(SqlTypeCode.Boolean, value.Type.TypeCode); Assert.AreEqual(SqlBoolean.False, value.Value); }
public void CastStringToInteger() { var exp = SqlExpression.Cast(SqlExpression.Constant(Field.String("1234")), PrimitiveTypes.Integer()); SqlExpression casted = null; Assert.DoesNotThrow(() => casted = exp.Evaluate()); Assert.IsNotNull(casted); Assert.IsInstanceOf <SqlConstantExpression>(casted); var value = ((SqlConstantExpression)casted).Value; Assert.IsNotNull(value.Value); Assert.IsInstanceOf <NumericType>(value.Type); Assert.AreEqual(SqlTypeCode.Integer, value.Type.TypeCode); Assert.AreEqual(new SqlNumber(1234), value.Value); }
public void CastDateToString() { var date = DataObject.Date(new SqlDateTime(2015, 02, 03)); var exp = SqlExpression.Cast(SqlExpression.Constant(date), PrimitiveTypes.String()); SqlExpression casted = null; Assert.DoesNotThrow(() => casted = exp.Evaluate()); Assert.IsNotNull(casted); Assert.IsInstanceOf <SqlConstantExpression>(casted); var value = ((SqlConstantExpression)casted).Value; Assert.IsNotNull(value.Value); Assert.IsInstanceOf <StringType>(value.Type); Assert.AreEqual(SqlTypeCode.String, value.Type.TypeCode); Assert.AreEqual(new SqlString("2015-02-03"), value.Value); }
public void CastStringToTime() { var exp = SqlExpression.Cast(SqlExpression.Constant(DataObject.String("22:13:01")), PrimitiveTypes.Time()); SqlExpression casted = null; Assert.DoesNotThrow(() => casted = exp.Evaluate()); Assert.IsNotNull(casted); Assert.IsInstanceOf <SqlConstantExpression>(casted); var value = ((SqlConstantExpression)casted).Value; Assert.IsNotNull(value.Value); Assert.IsInstanceOf <DateType>(value.Type); Assert.AreEqual(SqlTypeCode.Time, value.Type.TypeCode); // we round the expected value to the result offset because of the UTC parsing logic // of the date type: all we care here is the time component var result = ((SqlDateTime)value.Value); var expected = new SqlDateTime(1, 1, 1, 22, 13, 01, 0, result.Offset); Assert.AreEqual(expected, result); }
public static async void ReduceCast(object value, SqlTypeCode destTypeCode, int p, int s, object expected) { var targetType = PrimitiveTypes.Type(destTypeCode, new { precision = p, scale = s, maxSize = p, size = p }); var obj = SqlObject.New(SqlValueUtil.FromObject(value)); var exp = SqlExpression.Constant(obj); var cast = SqlExpression.Cast(exp, targetType); Assert.True(cast.CanReduce); var reduced = await cast.ReduceAsync(null); Assert.NotNull(reduced); Assert.IsType <SqlConstantExpression>(reduced); var result = ((SqlConstantExpression)reduced).Value; Assert.NotNull(result); Assert.Equal(destTypeCode, result.Type.TypeCode); var expectedResult = SqlObject.New(SqlValueUtil.FromObject(expected)); Assert.Equal(expectedResult, result); }