我正在尝试创建一个程序,该程序将返回一个包含给定8位数字表格数据库的“子编号”的表。例如,一个5400万的孩子将是54100000,54009900 54000001等等。
我的想法是声明一个变量表(ParentPartTable),它只包含数字的“父”部分(表,而不是单个值,因为我们可以传递多个我们需要的子数),所以在上面的示例中它将包含'54'然后执行类似的操作:
INSERT INTO @ReturnTable
SELECT n.Symbol, n.Id
FROM NumbersTable n
JOIN @ParentPartTable p
ON n.Symbol LIKE p.SYMBOL + '%';
不幸的是,这似乎不起作用。知道什么可能是错的吗?
答案 0 :(得分:1)
这很有效。
DECLARE @ParentPartTable TABLE
(
SYMBOL VARCHAR(8) /*Don't use CHAR(8) here!*/
)
INSERT INTO @ParentPartTable VALUES ('54');
WITH NumbersTable AS
(
SELECT '54000000' AS Symbol, 1 AS Id
)
SELECT n.Symbol, n.Id
FROM NumbersTable n
JOIN @ParentPartTable p
ON n.Symbol LIKE p.SYMBOL + '%';
您确定没有使用char(8)
吗?因为这将填充尾随空格。
答案 1 :(得分:0)
假设符号在两个表中都是数字,则需要在LIKE clausule中将ti转换为varchar。
ON n.Symbol LIKE cast(p.SYMBOL as varchar) + '%';
应该有用。