sql函数的问题

时间:2010-12-08 12:54:26

标签: sql sql-server

我正在尝试创建一个程序,该程序将返回一个包含给定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 + '%';

不幸的是,这似乎不起作用。知道什么可能是错的吗?

2 个答案:

答案 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) + '%';应该有用。