小编Die*_*ira的帖子

数据库模式中的国家特定字段

设计可以具有特定国家/地区字段的数据库模式的最佳实践是什么。

例如一个示例客户表

id
name
email
social_security_number (USA person ID)
curp (Mexico person ID)
cpf (Brazil person ID)
zip (USA postal code)
cep (Brazil postal code)
postcode (UK postal code)
Run Code Online (Sandbox Code Playgroud)

但是由于我们为每个国家/地区提供了更多特定字段,因此该表最终会包含很多字段。

另一种方法是使用代码代替

id
field001 > name
field002 > email
field003 > social security number for any country
field004 > postal code for any country
Run Code Online (Sandbox Code Playgroud)

我知道每种方法都有其优点和缺点。

database-design

5
推荐指数
1
解决办法
338
查看次数

NOT IN 用于解析 CSV

我正在尝试传递要在NOT IN操作中使用的项目数组:

ALTER FUNCTION [dbo].[fnTEST] (@CODES VARCHAR)
RETURNS TABLE 
AS
RETURN 
(
    SELECT
        T1.CODE AS 'CODE',
    (SELECT COUNT(*)
        FROM TABLE1 AS T2 WITH (NOLOCK)
        WHERE T2.CODE NOT IN (@CODES)
    ) AS 'COUNT'
    FROM TABLE1 T1 WITH (NOLOCK)
)
Run Code Online (Sandbox Code Playgroud)

然后我这样称呼它:

SELECT * FROM fnTEST ('500,250,202,900,204,200,300,400,600,800')
Run Code Online (Sandbox Code Playgroud)

那行不通。如果我尝试在没有引号的情况下调用它,则会收到参数过多的错误(这是预期的)。

有解决方案吗?

sql-server t-sql functions

1
推荐指数
1
解决办法
235
查看次数

标签 统计

database-design ×1

functions ×1

sql-server ×1

t-sql ×1