Azure 将十进制转换为字符串以在U-SQL中进行比较

Azure 将十进制转换为字符串以在U-SQL中进行比较,azure,u-sql,Azure,U Sql,我试图将数据从加载的CSV文件转换为Azure表,但遇到了一些问题,其中一个值加载为字符串,而表中的等效值为十进制 @ProdOutput = EXTRACT [p_description] string, [p_code] string, [p_price] string, [p_colour] string FROM "testing/martin/items.csv" USING Extractors.Csv(skipFirstNRows

我试图将数据从加载的CSV文件转换为Azure表,但遇到了一些问题,其中一个值加载为字符串,而表中的等效值为十进制

@ProdOutput = 
    EXTRACT 
    [p_description] string, 
    [p_code] string, 
    [p_price] string, 
    [p_colour] string
FROM "testing/martin/items.csv" 
USING Extractors.Csv(skipFirstNRows:1);  


// @items has been brought in from a table in Data Lake Analytics
@holdings_query = 
    SELECT ROW_NUMBER() OVER (ORDER BY h.code) AS rn, 
       h.description AS Description, 
       h.cd AS Code,    
       h.priceGBP  AS Price,    
       h.col AS Colour
FROM   @items AS h;



@result = 
    SELECT 
    p_description == Description ? p_description : String.Concat("Mismatch", p_description, " !! ", Description)  AS [Desc], 
    p_code == Code ? p_description : String.Concat("Mismatch", p_code, " !! ", Code)  AS [Code], 
    p_price == Price ? p_price: String.Concat("Mismatch", p_price, " !! ", Price)  AS [Price]
FROM @holdings_query AS h
LEFT OUTER JOIN @prod_data AS p ON h.Code == p.p_code;
问题是我希望EXTRACT语句将所有内容作为字符串一般地引入,因为我并不总是知道每个列的类型。因此,当我在最终语句中进行比较时,我希望将价格从十进制(如表中所示)转换为字符串,以便与CSV中的结果进行比较

我尝试过ToString()、ToString(“G”)、(string?)但它们都会抛出错误。我做错了什么

短暂性脑缺血发作 马丁

示例数据:
Items.csv:
“项目1”、“IT1”、“3.65”
“项目2”、“IT2”、“4.00”
“项目3”、“IT3”、“524.2123”

@项目表:
“项目1”,“IT1”,3.65
“项目2”,“IT2”,4.00

“Item3”,“IT3”,524.2123

尝试
十进制。在
字符串上解析
。此方法“…将数字的字符串表示形式转换为其十进制等效形式”。我得到了以下语句,其中
p_price
是字符串值:

@result =
    SELECT 
            Decimal.Parse(p.p_price) == h.Price ? 1 : 0 AS isEqual
...

您能提供一些示例数据吗?我尝试了您所说的,但收到了以下内容:说明C#编译器报告此表达式不是有效的C#。解析请确保指定了有效的C#表达式。第237行靠近#####的标记“h”处的详细信息:*********************###h.[Price]==Decimal.Parse(p.[p#u Price])?h、 [Price]:String.Concat(“不匹配”,h.[Price],“!!”,p.[p_Price])AS[Price]Error E#u CSC_USER_INVALIDCSHARP Message C#Error CS0173:无法确定条件表达式的类型,因为在'decimal'和'String'之间也没有隐式转换,问题是,我需要知道值是十进制的,才能转换它。那么,有没有一种方法可以说,如果类型是DECIMAL,那么就进行十进制转换和比较,否则就进行字符串比较?保持简单,然后尝试得到我给你的表达式。条件运算符必须返回相同的数据类型,因此我认为这就是为什么会出现该错误。返回字符串的类型代码,因此应该能够执行您需要的操作。您也可以使用TryParse。有关示例,请参见。