在子查询

时间:2019-03-14 15:58:31

标签: sql sql-server-2008-r2

@myVariable获得类型BIGINT的变量myColumn和类型nvarchar(200)的{​​{1}}会失败:

myTable

标题错误:

  

将数据类型nvarchar转换为bigint时出错。

完整查询如下:

WHILE (EXISTS (SELECT * FROM myTable WHERE LEFT(CONVERT(bigint,myColumn),17) = @myVariable))

我也用DECLARE @myVariable BIGINT SET @myVariable = (SELECT CurrentNumber FROM MyNumbers) WHILE (EXISTS (SELECT * FROM myTable WHERE LEFT(CONVERT(bigint,myColumn),17) = @myVariable)) BEGIN SET @myVariable = @myVariable + 1 END 尝试过,但是也失败了。

1 个答案:

答案 0 :(得分:1)

这没有意义:

export class ChildComponent {
  hasParent: boolean;

  constructor (
    private elRef: ElementRef
  ) {}

  ngOnInit() {
    const el = this.elRef.nativeElement.parentElement as HTMLElement
    this.hasParent = el.localName === 'app-parent'
  }
}

为什么要在数字上调用字符串函数?也许您打算:

LEFT(CONVERT(bigint, myColumn),17) = @myVariable

无论如何,我认为您应该传递一个字符串。假设CONVERT(bigint, LEFT(myColumn, 17)) = @myVariable 是一个字符串。像这样:

myColumn

当然,您仍然可以输入数字并使用:

myColumn LIKE @myVariable + '%'

但是我建议使用兼容的类型。

领先的零可能构成问题。但是,您尚未提供示例数据,所以我不知道这是否有问题。