
查一个药要踩过几个坑:九个会产生「看起来正常的输出」的失败,每个都附可重跑的验证
这个系列的每一篇,都是在同一批公开数据上查出来的:政府的药品批准文号数据集、文献检索的公开介面、试验登录库的结果栏位。过程中我们踩到九个坑,它们的共同特征是**不会报错**——查询照样回传、程式照样结束、数字照样印出来,只是答案是错的(例如用成分名查药证品名栏回 0 笔,同一份数据的主成分栏却有 17 张)[F1]。本文把九个坑逐一写出来,每一个都附上可以自己重跑的验证方式,以及一组正控制(应该要成功的案例)与负控制(应该要失败的案例)。最后附一句 should-FAIL:拿一个数据夹名称里的日期当论文编号去查,它查得到,而且是一篇真的论文[F16];换一个超出编号范围的数字才会回 0[F17]。

一、最危险的不是报错,是「看起来正常的输出」
如果一个查询丢出例外,你会停下来检查。但下面九种失败全都不会丢出例外:
- 查询送出去了,回传 200,回了 0 笔——而正确答案不是 0。
- 查询回了 5 笔,每一笔都是真的论文——但没有一篇跟你的问题有关。
- 逐字比对两段文字,回传「不相同」——而它们在人眼里一模一样。
- 一张批准文号的有效日期还没到——但它已经被注销了。
这一类失败的共同结构是:检查的对象存在,但检查的问题问错了。 所以本文每一个坑都配一组控制:一个应该成功的案例(正控制),一个应该失败的案例(负控制)。如果负控制没有失败,那你的检查本身就是坏的。
以下每一个坑,都是在写这个系列的过程中真的撞到的。
二、第一类:查询式没错,但你查的是错的栏位

坑 1:用成分名查药证,会得到 0 笔
症状:想查「台湾有哪些含 semaglutide 的药」,用成分名去搜品名,回传 0 笔。看起来像「台湾没有这个成分」。
验证方式:下载主管机关的全部药品批准文号数据集,把中文品名与英文品名两栏接起来搜寻 `semaglutide`(不分大小写),再单独搜主成分略述栏。
实查结果:品名栏 0 笔,主成分略述栏 17 张批准文号1。
正控制:改用英文品名 `MOUNJARO` 搜品名栏,回传 18 张——证明搜寻逻辑本身是好的2。 负控制:搜一个不存在的字串 `zzzzpatide`,品名栏与主成分栏都是 0——证明它会回 0,不是永远回 03。
教训:回传 0 的时候,先问「这个栏位存不存这种资讯」,再问「是不是真的没有」。 品名栏不索引成分,这不是数据错,是栏位设计。
坑 2:排序型检索没有「查无」这个答案
症状:用中文词去查英文文献库,回传好几笔,每一笔都是真论文,看起来像有相关研究。
验证方式:在文献检索的公开介面用 `瘦瘦针` 当查询字串。
实查结果(实查日快照):回传 5 笔,前五篇的标题分别是关于统一新罗时代的医学进展、背俞穴的针刺方法、宋代对脓疡的认知与治疗、中世纪东亚的生命与身体,以及医方知识的传承4。没有一篇跟这类药有关——它们是被「瘦」与「针」这两个字元配对到的。
负控制:改查一个乱数字串,回传 0 笔5。这一步很重要:它证明了那 5 笔不是机器坏掉随便回的,而是引擎真的认为那 5 笔最相关。
教训:「有回传」与「有命中」是两件事。 任何以相关性排序的检索,都会把「最像的」当成答案交出来;它没有「查无」这个选项可以选,除非完全比对不到任何 token。跨语言查询尤其危险,因为假阳性率会高到看不出来。
三、第二类:过滤条件安静地砍掉了你要找的东西

坑 3:用研究型别过滤,会整批砍掉综述类证据
症状:为了「只看随机对照试验」,在查询式加上研究型别过滤。结果变干净了,看起来很专业。
验证方式:同一个主题查询,比较加不加 `PUB_TYPE:"Randomized Controlled Trial"` 的结果数。
实查结果(实查日快照):不加过滤 209 笔,加了之后剩 8 笔6。被砍掉的包括一篇系统性回顾与统合分析,以及一篇同一议题的期刊评论——用编号单独测,两篇加上该过滤后都变成 0 笔7。
注意这里有一个反直觉的结果,而且它被我们自己的测试改写过两次:我们原本预期主要的枢纽试验都会被这个过滤砍掉,实测第一轮发现有一篇停药试验没有被砍掉,仍留在结果里6;但再往下测,另一篇同为第三期的关键试验确实被砍掉了18。
原因在于型别标记本身就不一致。同样是第三期随机分派试验,一篇被标上了「随机对照试验」这个型别,另一篇没有——后者被标的是「第三期临床试验」「比较性研究」「等效性试验」等等18。加上型别过滤之后,没有那个标记的就整篇消失。
所以正确的叙述有三层:型别过滤一定会砍掉整合多个试验的综述类证据7;它也可能砍掉个别的枢纽试验,取决于该篇被标了什么18;而且被砍掉的那一篇,你在结果清单里看不到任何痕迹。
这一条是我们原本的假设先被自己的测试推翻、再被第二次测试部分还原后改写的。
正控制:不加过滤时,前面提到的那篇系统性回顾与那篇期刊评论各自都查得到(各 1 笔)7;两篇第三期试验不加过滤时也各查得到 1 笔18。四篇都在,差别只在加了过滤之后谁还留著。
教训:过滤条件不会告诉你它砍掉了什么。 加过滤之前,先记下不加过滤的笔数;差额就是你放弃的东西。
坑 4:用数据库来源过滤,会让整篇文献消失
症状:习惯在查询式加上「限 PubMed 来源」,因为那样比较「正规」。
验证方式:用一份没有 PMID、只有 PMC 编号的文献来测。本系列引用的 STEP 1 体组成分析就是这种——它以学会年会摘要的形式发表,只有 PMC 编号。
实查结果:不加来源过滤,查得到 1 笔;加上 `SRC:MED` 之后,变成 0 笔8。
正控制:换一篇同时有 PMID 与 PMC 编号的文献,加上同样的来源过滤仍然查得到 1 笔8——证明过滤语法没写错。
教训:没有 PMID 的东西不等于不存在。 会议摘要、部分期刊的补充材料、预印本都可能落在这个缝里。若你的文献检索一律加来源过滤,你永远不会知道自己漏了什么。
四、第三类:「有这个栏位」不等于「有这个东西」
坑 5:查得到适应症,不等于查得到说明书
症状:从公开数据查到了适应症全文,于是以为「说明书查到了」。
验证方式:把数据集的表头列印出来,数栏位。
实查结果:共 28 栏,其中没有任何一栏是警语、禁忌、交互作用、副作用或不良反应9。
教训:适应症栏是说明书的一小块,不是说明书。 一份只有适应症的整理,若写成「依据说明书」,读者会以为里面包含了安全性资讯。这个系列的每一篇都把这件事写出来。
同一类的一个小陷阱:数据集的下载网址结尾是 `csv`,但实际下载回来的档案,`file` 指令判定为 Zip 压缩档10。副档名与内容不一致,直接用 CSV 读取器开会失败——而失败讯息通常是编码错误,会把人引导到错的方向。
坑 6:判断药证是否有效,不能只看有效日期
(这一坑放在这里,因为它也是「栏位在说谎」的一种。)
症状:用「有效日期是否已过」来判断一张批准文号还有没有效,看起来天经地义。
验证方式:在数据集里找出「注销状态栏是空的、但注销日期或注销理由有值」的纪录,数数量。
实查结果:这样的批准文号有 343 张11。
正控制:其中两张的中文品名是易周糖注射剂 3 毫克与 4.5 毫克。它们的有效日期是 2027/09/23(还没到),但注销日期是 2026/03/18、注销理由是「自请注销」,而注销状态栏是空的11。只看有效日期,会判断成仍然有效。
教训:正确的判断方式是「注销状态、注销日期、注销理由三个栏位任一有值,即视为已退场」。 这一条直接决定了整个系列第一篇的清单对不对。
五、第四类:字面比对比你以为的脆弱

坑 7:自由文字栏位用精确比对,必然漏数
症状:想数「有几张批准文号的适应症是这一句」,于是用完全相同比对。
验证方式:取出成分为 orlistat 的现行指示药品,列出所有相异的适应症字串。
实查结果:共 15 张。用出现次数最多的那一句去做精确比对,只命中 8 张,漏掉 7 张12。差异包括「十八岁」与「18岁」、「大于等于」与「≧」、半形括号与全形括号、句号与逗号、以及单位前面多打的一个空格。
「有几种写法」这个数字本身取决于计数口径,同一批 15 张有三个都正确的答案(本系列凡引用此数字一律标明口径)12:
| 计数口径 | 相异写法数 |
|---|---|
| 原始字串,不做任何处理 | 8 种 |
| 先做 NFKC 正规化 | 6 种 |
| NFKC 后再去掉全部空白字元 | 5 种 |
三个数字不冲突,它们数的是不同东西。正规化帮得上忙,但不会把问题消掉:即使做到最宽松的第三种口径,仍有 5 种写法,因为「十八岁」与「18岁」、顿号与逗号这类差异不是正规化能消掉的12。引用这类数字时,只写数字不写口径,等于没写。
教训:自由文字栏位不受统一写法的约束。 要数这种栏位,只能先枚举全部相异值,再人工归类;不能先假设「应该只有一种写法」。
坑 8:政府档里有肉眼看不见的字
症状:把说明书原文复制到自己的稿子里,再写程式逐字比对,结果回报「不相同」。肉眼看两边一模一样。
原因:原始档使用了 Unicode 的「中日韩相容表意文字」区(U+F900 到 U+FAFF)。这些字元与一般写法外观相同、编码不同。
验证方式:扫描整份数据集,统计落在该区间的字元。
实查结果(实查日快照):全档 72,013 个数据列中,有 748 列含有这类字元,总计出现 8,380 次,共 85 种不同字元;出现最多的是「疗」。单看两张批准文号的适应症栏,猛健乐那一张有 13 个、周纤达那一张有 39 个13。
正控制:对同一段文字做 NFKC 正规化之后再扫,落在该区间的字元数变成 013。 负控制:扫批准文号字号那一栏(全部是 ASCII 与常用汉字),落在该区间的字元数是 013——证明扫描器不是把所有汉字都当成相容字。
这个负控制救了我们一次。 在准备这篇稿子的过程中,同一段扫描程式被重写了一次,范围上界写成了外观相同的一般汉字,结果扫描结果变成「全部 72,013 列都含相容字、85 种变成 685 种」。这个坑会反咬写检查的人——如果没有负控制,那组明显不合理的数字会被当成新发现写进文章。
教训:宣称「逐字相同」时,必须说明比对前做了哪一种正规化。 本系列的做法是:两边都先做 NFKC 再逐字元比对;引用时只把相容区的字元换成一般写法,其余全形半形、括号种类、标点差异一律照原档保留。
六、第五类:同一个东西,有两个以上都正确的数字

坑 9:母体数与主要终点,都可能有多个合法版本
实例一:同一份数据,母体笔数有三个版本。 同一份药品批准文号数据,用不同的计数方式会得到不同的数字(皆为实查日快照):数据列数 72,013、相异批准文号字号数 66,459;而某个第三方查询工具的说明文字写的是另一个数字 71,83614。三个都不是错的——它们数的东西不同(列、批准文号、该工具建立索引当天的快照)。
实例二:同一个试验、同一个主要终点,论文与登录库的数字不一样。 本系列引用的一个停药试验,论文摘要写的主要终点是安慰剂组 +14.0%、用药组 −5.5%;试验登录库同一个终点栏位写的是 14.8% 与 −6.7%15。差异的原因就写在登录库的族群说明里:那一笔的分析排除受试者停掉试验用药之后的数据,论文摘要用的是不排除的算法15。
教训:「我对过原文」这句话没有资讯量,除非你说出对的是哪一份、哪一种算法。 引用数字时要一并写下计数单位与分析设定,否则下一个人拿另一个同样正确的数字来,就会变成无法收敛的争论。
七、一句 should-FAIL:只验「编号存在」,会 100% 全绿
最后一件事,是关于检查本身。
一个常见的品管做法是「检查每个引用的论文编号是否查得到」。这个检查有一个致命的性质:它几乎永远会过。
验证方式:拿一个跟文献完全无关的数字当论文编号去查。我们用的是一个工作数据夹名称里的日期:`20260819`。
实查结果:查得到。那是一篇 1946 年发表在心脏科期刊上的论文,标题是「One hundred positive hypoxemia tests」16。
负控制:换一个超出编号范围的数字 `999999999`,回传 0 笔17——证明这个查询确实会回 0,只是很难回 0。
教训:「编号存在」是一个几乎没有鉴别力的检查。 真正要验的是三件事:(一)这个编号配的论文,讲的是不是你说的那件事;(二)你引的那个数字,是不是真的出现在摘要或登录库的结果栏位里;(三)读者点进去,是不是真的看得到。第三点特别容易被忽略——本系列引用的多数枢纽试验都有付费墙,所以每一篇都额外附一条开放取用版本或试验登录库结果页的路径。
八、把九个坑收成一张表,以及这套方法的边界
| # | 坑 | 一句话验证 | 负控制长什么样 |
|---|---|---|---|
| 1 | 成分名查不到药证 | 同时查品名栏与主成分栏,比对笔数 | 用不存在的字串,两栏都要回 0 |
| 2 | 排序型检索没有「查无」 | 看回传内容,不看回传笔数 | 用乱数字串,要回 0 |
| 3 | 型别过滤砍掉综述 | 记下加过滤前后的笔数差 | 被砍掉的那笔,单独查要能查到 |
| 4 | 来源过滤让整篇消失 | 用一笔没有 PMID 的数据测 | 用有 PMID 的那笔测,要留下 |
| 5 | 有适应症不等于有说明书 | 把表头列出来数栏位 | 找警语栏,要找不到 |
| 6 | 自由文字精确比对必漏 | 先枚举所有相异值 | 最常见那句的命中数要小于总数 |
| 7 | 同一个数字有多个版本 | 写下计数单位与分析设定 | 换一种算法,数字要跟着变 |
| 8 | 看不见的相容字 | 两边都先 NFKC 再比对 | 扫纯 ASCII 栏位,要回 0 |
| 9 | 只看有效日期会判错 | 三个注销栏任一有值即视为退场 | 找有效日期未到但已注销的实例 |
这套方法的边界,也要写清楚。
它只处理「查得对不对」,不处理「证据强不强」。 一个数字查对了、来源标对了,不代表那个研究设计得好,也不代表它适用于你。
它需要一手来源可公开取得。 本系列能这样做,是因为药品批准文号数据、文献检索介面与试验登录库都有公开的查询方式。碰到没有公开一手来源的主题,这套流程走不完,那时候诚实的做法是写「截至实查日未查到」,并附上查询式与正控制,而不是补一个看起来像真的的答案。
它防不了「问错问题」。 所有的控制都只能检查你问的那个问题,答案对不对;它不会告诉你这个问题本身值不值得问。
本文为数据查证方法的整理,所有实查结果皆为实查日的快照,不构成医疗建议。
本文属「GLP-1 证据系列」,系列的证据基础在 瘦瘦针在台湾的法定底帐:哪些药证还有效、哪些早就退场、名字又错在哪,该篇并列出全系列十篇。
引用来源逐条
正文每一个 `[F<n>]` 标记,都对应下面一条定义。每条依序写出:主张、来源逐字原文、查询网址、依据层级、查核日期。
- [F1]|以 semaglutide 搜藥品許可證資料的中文品名+英文品名欄回傳 0 張,搜主成分略述欄回傳 17 張|(實查輸出)semaglutide: 品名欄命中=0 主成分欄命中=17|全部藥品許可證資料集;比對方式:許可證字號去重後,對「中文品名+英文品名」與「主成分略述」分別做小寫子字串比對|editorial(我們的計數,方法如左)|2026-08-26
- [F2]|正控制:以 MOUNJARO 搜英文品名欄回傳 18 張|(實查輸出)正控制 MOUNJARO in 英文品名 = 18|同 F1|editorial|2026-08-26
- [F3]|負控制:以 zzzzpatide 搜品名欄與主成分欄皆回傳 0 張|(實查輸出)負控制 zzzzpatide 品名欄 = 0 主成分欄 = 0|同 F1|editorial|2026-08-26
- [F4]|以「瘦瘦針」查 Europe PMC,實查日回傳 5 筆,前五篇為古代東亞醫學史相關論文|(實查輸出)hitCount(當日快照)= 5/37257929 How Did the Clinical Medicine Progress during the Unified Silla Era/36316824 Anatomical structures and needling method of the back-shu points BL18, BL20, and BL22/38768993 The Perception and Treatment of People about Abscesses in the Song Period/31092803 An Exploration into Life, Body, Materials, Culture of Mediaeval East Asia/29724986 Knowledge Transmission of Medical Prescription and the Role of the Literati Officials|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&pageSize=5&query=%E7%98%A6%E7%98%A6%E9%87%9D|editorial(實查日快照;筆數會變動)|2026-08-26
- [F5]|負控制:以亂數字串 zzqqxxvvnonsense 查詢,回傳 0 筆|(實查輸出)hitCount(當日快照)= 0|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&pageSize=5&query=zzqqxxvvnonsense|editorial|2026-08-26
- [F6]|同一主題查詢加上研究型別過濾,實查日筆數自 209 降為 8;該主題的主要停藥試驗在加過濾後仍留在結果內|(實查輸出)不加過濾 hitCount= 209/加 PUB_TYPE 過濾 hitCount= 8,結果清單含 38078870|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&query=tirzepatide%20AND%20withdrawal%20AND%20%22weight%20regain%22(與加上 %20AND%20PUB_TYPE:%22Randomized%20Controlled%20Trial%22 的版本比較)|editorial(實查日快照)|2026-08-26
- [F7]|一篇系統性回顧(PMID 42534203)與一篇期刊評論(PMID 42043833)在加上研究型別過濾後皆為 0 筆,不加過濾時各為 1 筆|(實查輸出)EXT_ID:42534203 無過濾 hitCount= 1/加RCT過濾 hitCount= 0;EXT_ID:42043833 無過濾 hitCount= 1/加RCT過濾 hitCount= 0|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&query=EXT_ID:42534203%20AND%20SRC:MED(與加上型別過濾的版本比較)|editorial(實查日快照)|2026-08-26
- [F8]|PMC8089287 不加來源過濾回傳 1 筆,加上 SRC:MED 回傳 0 筆;正控制 PMC9542252 加上 SRC:MED 仍回傳 1 筆|(實查輸出)A. PMCID:PMC8089287(無過濾)hitCount= 1/B. PMCID:PMC8089287 AND SRC:MED hitCount= 0/C. PMCID:PMC9542252 AND SRC:MED hitCount= 1|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&query=PMCID:PMC8089287(與加上 %20AND%20SRC:MED 的版本比較)|editorial|2026-08-26
- [F9]|藥品許可證資料集共 28 欄,無警語、禁忌、交互作用、副作用或不良反應欄位|許可證字號、註銷狀態、註銷日期、註銷理由、有效日期、發證日期、許可證種類、舊證字號、通關簽審文件編號、中文品名、英文品名、適應症、劑型、包裝、藥品類別、管制藥品分類級別、主成分略述、申請商名稱、申請商地址、申請商統一編號、製造商名稱、製造廠廠址、製造廠公司地址、製造廠國別、製程、異動日期、用法用量、包裝與國際條碼|同上資料集 CSV 表頭列|official_text|2026-08-26
- [F10]|資料集下載網址結尾為 csv,但下載內容經 file 判定為 Zip 壓縮檔|(實查輸出)exp36.txt: Zip archive data, at least v2.0 to extract, compression method=deflate|https://data.fda.gov.tw/data/opendata/export/36/csv|editorial(實查日快照)|2026-08-26
- [F11]|註銷狀態欄為空、但註銷日期或註銷理由有值者共 343 張;實例為易週糖注射劑 3 毫克與 4.5 毫克,有效日期 2027/09/23、註銷日期 2026/03/18、註銷理由「自請註銷」、註銷狀態欄為空|(實查輸出)註銷狀態空、但註銷日期或理由有值 = 343 張/衛部菌疫輸字第001199號 易週糖注射劑3毫克/0.5毫升 狀態= '' 日期= '2026/03/18' 理由= '自請註銷' 有效= 2027/09/23/衛部菌疫輸字第001200號 易週糖注射劑4.5毫克/0.5毫升 狀態= '' 日期= '2026/03/18' 理由= '自請註銷' 有效= 2027/09/23|同上資料集,許可證字號去重後統計|official_text(欄位值)+editorial(統計)|2026-08-26
- [F12]|orlistat 現行指示藥品 15 張,適應症相異寫法數依計數口徑有三個值:原始字串 8 種、NFKC 後 6 種、NFKC 再去全部空白後 5 種;以最常見那句精確比對僅命中 8 張|(實查輸出)有效指示藥張數= 15/A 原始字串相異數= 8/B NFKC 後相異數= 6/C NFKC+去所有空白後相異數= 5/用最常見那句做精確比對 → 命中 8 / 15 張(漏 7)/負控制:以不存在的成分名 zzzlistat 查主成分略述欄 = 0 張|同上資料集;條件:主成分略述含 orlistat、藥品類別含「指示」、註銷三欄皆空|official_text(欄位值)+editorial(統計)|2026-08-26
- [F13]|相容表意文字統計(實查日快照):72,013 個資料列中 748 列含此區字元,共出現 8,380 次、85 種;猛健樂 028463 適應症 13 個、週纖達 001225 適應症 39 個;NFKC 後為 0;許可證字號欄為 0|(實查輸出)ROW-LEVEL: rows=72013, rows_with_compat=748, occurrences=8380, distinct=85/衛部藥輸字第028463號 適應症 compat count = 13/衛部菌疫輸字第001225號 適應症 compat count = 39/NEG CONTROL 許可證字號欄 compat = 0/POS CONTROL: NFKC 後 028463 適應症 compat = 0/(同一支掃描程式把區間上界誤寫成外觀相同的一般漢字時的輸出,即文中所述被負控制擋下的那一次)ROW-LEVEL 含相容字列數= 72013 次數= 997958 字種= 685|同上資料集;掃描範圍 U+F900–U+FAFF,以明確碼位比較|editorial(我們的統計,方法如左)|2026-08-26
- [F14]|同一份資料的母體筆數有三個版本(皆為實查日快照):資料列 72,013、相異許可證字號 66,459、第三方查詢工具說明文字所載 71,836|(實查輸出)RAW_ROWS= 72013 UNIQUE_LICENSE= 66459/(第三方工具說明)衛福部食藥署 全部藥品許可證 search (data.gov.tw 9122, 71,836 件)|同上資料集,與第三方查詢工具的說明文字|editorial(實查日快照)|2026-08-26
- [F18]|同為第三期隨機分派試驗,出版型別標記不一致:一篇含「Randomized Controlled Trial」故加過濾後留下,另一篇不含該標記故加過濾後為 0。本條引用的是 Europe PMC/PubMed 的書目 metadata 欄位(pubTypeList)與檢索回傳筆數,不是 ClinicalTrials.gov 試驗登錄庫欄位,也不是這兩篇論文的研究結果|(實查輸出)EXT_ID:38078870 pubTypeList=Clinical Trial, Phase III/Research Support, Non-U.S. Gov't/research-article/Multicenter Study/Randomized Controlled Trial/Journal Article;加過濾 hitCount=1。EXT_ID:40353578 pubTypeList=Clinical Trial, Phase III/Comparative Study/Equivalence Trial/Multicenter Study/Journal Article(無 RCT 標記);加過濾 hitCount=0,不加過濾 hitCount=1|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&resultType=core&query=EXT_ID:40353578%20AND%20SRC:MED(與加上 %20AND%20PUB_TYPE:%22Randomized%20Controlled%20Trial%22 的版本比較)|editorial(我們對檢索系統書目 metadata 的實查輸出)|2026-08-26
- [F15]|同一試驗同一主要終點,論文摘要為 14.0%/−5.5%,試驗登錄庫為 14.8%/−6.7%,差異來自登錄庫該筆排除停藥後資料|論文摘要:The mean percent weight change from week 36 to week 88 was -5.5% with tirzepatide vs 14.0% with placebo/登錄庫族群說明:All randomized participants who received at least one dose of the study drug, had randomization and at least one post-randomization values for this outcome, excluding data after discontinuation of the study drug.|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&query=EXT_ID:38078870%20AND%20SRC:MED 與 https://clinicaltrials.gov/api/v2/studies/NCT04660643|peer_reviewed(論文值)+registry(登錄庫值)|2026-08-26
- [F16]|以 20260819 當論文編號查詢,查得到一篇 1946 年的論文。本條要證明的是檢索器的行為(一個無關數字也會命中真論文),引用的是檢索回傳的題名與年份這兩個書目欄位,不是該 1946 年論文的研究結果|(實查輸出)title: One hundred positive hypoxemia tests./journal: Acta cardiologica | year: 1946|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&query=EXT_ID:20260819%20AND%20SRC:MED|editorial(我們的檢索輸出;書目欄位本身可在 Europe PMC/PubMed 核到)|2026-08-26
- [F17]|負控制:以 999999999 當論文編號查詢,回傳 0 筆|(實查輸出)EXT_ID:999999999 hitCount= 0|https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&query=EXT_ID:999999999%20AND%20SRC:MED|editorial|2026-08-26
FAQ
- 为什么查询回传 0 笔不能当成「没有」?
- 因为 0 有两种来源:真的没有,或你查的栏位不存这种资讯。实例是用成分名 `semaglutide` 去查药品批准文号数据的品名栏,回传 0 笔;但同一份数据的主成分略述栏有 17 张[F1]。要分辨这两种 0,需要一个正控制(换一个确定存在的字串去查,要查得到)[F2],以及一个负控制(用不存在的字串去查,两栏都要回 0)[F3]。
- 用中文词查英文文献库会发生什么事?
- 会拿到「真的论文、但完全无关」的结果。以「瘦瘦针」查询,实查日回传 5 笔,主题分别是古代东亚的医学史与针刺方法,没有一篇与这类药有关[F4]——它们是被「瘦」与「针」两个字元配对到的。用乱数字串当负控制查询,回传的是 0 笔[F5],证明引擎确实会回 0,那 5 笔是它真的认为最相关。
- 加「只看随机对照试验」的过滤条件有什么问题?
- 它会安静地砍掉一部分证据,而且被砍掉的不只是综述类,正确的说法有三层。第一层:它一定会砍掉整合多个试验的综述类证据——实测同一个主题查询,不加过滤 209 笔、加了剩 8 笔[F6],被砍掉的包含一篇系统性回顾与统合分析[F7]。第二层:它**也可能**砍掉个别的枢纽试验,取决于那一篇被标了什么型别。同样是第三期随机分派试验,PMID 38078870 被标上「Randomized Controlled Trial」,加过滤后仍在(1 笔);PMID 40353578 没有这个标记,只被标成「第三期临床试验」「比较性研究」「等效性试验」「多中心研究」,加过滤后就变成 0 笔(不加过滤是 1 笔)[F18]。第三层:被砍掉的那一篇,你在结果清单里看不到任何痕迹——结果只会变少,不会告诉你少了谁。
- 为什么有的文献加了「限 PubMed」就查不到?
- 因为它没有 PMID。本系列引用的一份体组成分析以学会年会摘要形式发表,只有 PMC 编号;不加来源过滤查得到 1 笔,加上限 PubMed 之后变成 0 笔[F8]。用一篇同时有两种编号的文献做正控制,加同样的过滤仍然查得到[F8],证明语法没写错。
- 什么是「看不见的相容字」?
- 是 Unicode 中日韩相容表意文字区(U+F900 到 U+FAFF)的字元,与一般写法外观相同、编码不同。实查日的统计是:全档 72,013 个数据列中有 748 列含这类字元,总计 8,380 次、85 种[F13]。不做正规化的话,正确的引文也会被判成不符。
- 逐字比对要怎么做才不会误判?
- 两边都先做 NFKC 正规化,再逐字元比对。同时要有负控制:拿一段刻意改过一个字的文字去比,必须被判成不同。若负控制没有失败,代表比对器本身坏了——本文第五类那个坑就是这样抓到的(扫描器被改坏时,同一份数据的统计从 748 列暴增成全部 72,013 列,是负控制挡下来的)[F13]。
- 怎么判断一张药品批准文号还有没有效?
- 不能只看有效日期。数据中有 343 张批准文号的注销状态栏是空的,但注销日期或注销理由有值[F11]。实例是两张有效日期为 2027/09/23、但已于 2026/03/18 自请注销的批准文号[F11]。正确的判断是注销状态、注销日期、注销理由三栏任一有值,即视为已退场。
- 检查「论文编号查得到」有用吗?
- 几乎没有鉴别力。我们拿一个工作数据夹名称里的日期 `20260819` 当论文编号去查,查得到,而且是一篇 1946 年的真论文[F16];换一个超出编号范围的数字 `999999999` 才会回 0 笔[F17]。要验的是编号对应的论文讲的是不是那件事、你引的数字是否真的在摘要或登录库栏位里,以及读者是不是真的点得进去。
来源锚定
- 衛生福利部食品藥物管理署 全部藥品許可證資料集 · https://data.gov.tw/dataset/9122 · 在 IDAEO 的其他引用
- 同上,完整下載點 · https://data.fda.gov.tw/data/opendata/export/36/csv · 在 IDAEO 的其他引用
- Europe PMC 文獻檢索 · https://europepmc.org/ · 在 IDAEO 的其他引用
- Europe PMC 公開查詢介面說明 · https://europepmc.org/RestfulWebService · 在 IDAEO 的其他引用
- ClinicalTrials.gov 試驗登錄庫 · https://clinicaltrials.gov/ · 在 IDAEO 的其他引用
- 本文第三類舉例的第三期試驗之一,PMID 38078870,有出版型別「Randomized Controlled Trial」標記;原文付費,此頁可讀書目與摘要 · https://europepmc.org/article/MED/38078870 · 在 IDAEO 的其他引用
- 本文第三類舉例的第三期試驗之二,PMID 40353578,無該項標記;原文付費,此頁可讀書目與摘要 · https://europepmc.org/article/MED/40353578 · 在 IDAEO 的其他引用
- Unicode 中日韓相容表意文字區碼表 · https://www.unicode.org/charts/PDF/UF900.pdf · 在 IDAEO 的其他引用
引用本文
林編輯・《查一个药要踩过几个坑:九个会产生「看起来正常的输出」的失败,每个都附可重跑的验证》・IDAEO 知識庫・2026-08-26・https://km.idaeo.ai/post/health/how-to-read-drug-evidence