mysql/sqlserver where in 传参数的问题

参数:@p0=1,2,3,4

1.我们普通的查询如下:

select *from table_name t where t.field1in (1,2,3,4,...);


如果需要传参数的话

select *from table_name t where t.field1in (@p0);

这样最终的sql是select *from table_name t where t.field1in (‘1,2,3,4,...‘);

只能查出t.field1=1的结果(具体为什么能查出第一个记录待研究)


要想所有参数都能查出的话这样是不行的,这时候需要使用第二中解决方案


2.find_in_set 使用这个方法来搞定

select *from table_name t where  find_in_set(t.field1,'1,2,3,4');

下面是相关排序和sqlserver的解决方案

MySQL/sqlserver查询in操作 查询结果按in集合顺序显示

select * from ibs6_terminal_adv_inf where id in (16,14,15) order by field(id,16,14,15)

select * from ibs6_terminal_adv_inf where id in (16,14,15) order by find_in_set(id,'16,14,15')

select * from ibs6_terminal_adv_inf where id in (16,14,15) order by substring_index('16,14,15',id,1)

结果就是按顺序显示了

sqlserver 用以下的语句

select * from ibs6_terminal_adv_inf where id in (16,14,15)  order by CHARINDEX(','+ltrim(id)+',',',16,14,15,')"


这个方法没有测试过,有测试过的同学可以发一下结果


注意了,里面有很多逗号,一个都不能少哦~~~



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在MySQL中查询SQL Server据,您可以使用MySQL提供的Federated存储引擎。Federated存储引擎允许在MySQL中访问其他据库的表。 以下是在MySQL中查询SQL Server据的一般步骤: 1. 在MySQL服务器上启用Federated存储引擎。您可以通过编辑MySQL配置文件(通常是my.cnf或my.ini)来完成此操作。确保以下行未被注释: ``` [mysqld] federated ``` 2. 重启MySQL服务器以使更改生效。 3. 在MySQL中创建一个Federated表,该表将连接到SQL Server据库。例如,假设您要查询名为"employees"的SQL Server表,您可以执行以下命令: ``` CREATE TABLE employees_federated ( employee_id INT, employee_name VARCHAR(255), ... ) ENGINE=FEDERATED CONNECTION='mysql://sqlserver_username:sqlserver_password@sqlserver_host:sqlserver_port/sqlserver_database/employees'; ``` 确保将"sqlserver_username"、"sqlserver_password"、"sqlserver_host"、"sqlserver_port"和"sqlserver_database"替换为适当的值,以便连接到SQL Server据库。 4. 现在,您可以使用标准的SELECT语句在MySQL中查询该Federated表,就像查询普通MySQL表一样。例如: ``` SELECT * FROM employees_federated WHERE employee_id = 123; ``` 这将从SQL Server表中检索具有employee_id等于123的记录。 请注意,Federated存储引擎的性能可能会受到网络延迟的影响,因此在查询大量据时可能会有一定的性能损失。此外,Federated表不支持对SQL Server表的所有操作(例如更新和删除),只能进行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码者人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值