在 C# OleDb 中使用 SQL 搜索子字符串
Posted
技术标签:
【中文标题】在 C# OleDb 中使用 SQL 搜索子字符串【英文标题】:Search a substring using SQL in C# OleDb 【发布时间】:2017-05-05 20:13:34 【问题描述】:我在 MS Access 中有一个客户数据库。 我想做一个 sql 查询,从我的主键字段中搜索一个子字符串。
例如:
我想选择所有包含数字“35”的ID。
我的数据库在 SELECT 语句之前:
我的数据库在 SELECT 语句之后:
有可能吗?
【问题讨论】:
但是.. 你的主键是字符串还是数字??如果它是一个字符串,你应该检查这个链接:w3schools.com/sql/sql_like.asp 【参考方案1】:由于 Access 通配符是 *
而不是 %
并且,AFAIK,Access 不支持 CONTAINS
我想你真的想要:
SELECT * FROM MyTable WHERE ID like "*35*"
尽管根据我们在 cmets 中的讨论,其他选项(当 ID
字段不是 string
时)是:
SELECT * FROM MyTable WHERE Str(ID) like "*35*"
和
SELECT * FROM MyTable WHERE CStr(ID) like "*35*"
【讨论】:
我可以在 C# 中使用 OleDb 吗? 我从未尝试过,但为什么不试一试呢?如果遇到问题,请再提出另一个问题。 它适用于字符串字段,我如何将它用于整数字段? 在 Access 中,它似乎对我有用,无需更改整数字段。但是,您可能想尝试WHERE str(ID) like "*35*"
。
谢谢,但我需要它用于 C#,它不适用于 str(ID),它不知道 str 是什么。【参考方案2】:
假设ID字段是数字,
在 MsAccess 中:
Select * from myTable
where str(ID) like "*35*"
在 SQL Server 中
Select * from myTable
where str(ID, 12, 0) like '%35%'
【讨论】:
我可以在 C# 中使用 OleDb 吗?【参考方案3】:SELECT *
FROM your_table
WHERE CAST(ID AS VARCHAR(20)) LIKE '%35%';
【讨论】:
我没有投反对票,但问题是关于 MS Access。我认为您的代码在那里无效。对于初学者,通配符是*
而不是%
。至于CAST
...?
啊,我没有注意到 MS Access 标签。我在那里开枪。以上是关于在 C# OleDb 中使用 SQL 搜索子字符串的主要内容,如果未能解决你的问题,请参考以下文章